2017-02-16 6 views
0

私はPolymerプロジェクトに静的にサービスを提供する高速サーバーを持っています。私は、必要なREST APIクエリを持っていますが、クライアントからそれを作成すると、CORSによってブロックされます。だから私はそれを回避しようとするためにexpress-http-proxyを使った。私は自分の要求をそれに送り、REST APIエンドポイントを持つサーバーにリダイレクトします。これは、node server.jsを実行している私のサーバーコードの全体です:express-http-proxyはCORSポリシーでまだブロックされています

var express = require('express'); 
var proxy = require('express-http-proxy'); 

var server = express(); 
server.use('/', express.static(__dirname + '/')); 
server.listen(8080); 
server.use('/rest/api/2/search', proxy('restserver:8877')); 
console.log("Server listening on localhost:8080"); 

私はrestserverアクセス​​:それは「デフォルト」の検索として、JSONの束を返し、ブラウザに8877 /休憩/ API/2 /検索を。クライアント側では

、私はこの要求作る鉄AJAXあります

<iron-ajax 
      id="getBugs" 
      url="/rest/api/2/search" 
      params='' 
      on-response="handleResponse" 
      debounce-duration="300"> 
     </iron-ajax> 

、スクリプトのセクションでは、私がリクエストを送信するためにready機能でthis.$.getBugs.generateRequest()を使用しています。だから私はCORSによってブロックされないことを期待して、これをロードします。それはサーバーによってプロキシされているからです。それは私にそれらのURLを与えて、なぜ私はそれらを参照することはありませんので、

XMLHttpRequest cannot load http://restserver:8877/secure/MyJiraHome.jspa. Redirect from 'http://restserver:8877/secure/MyJiraHome.jspa' to 'http://restserver:8877/secure/Dashboard.jspa' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 

私は、理解していない、そしてそれは、サーバからではないだろうので、それは、原因CORSにブロックしている理由:その代わり、クロームデベロッパーツールでは、この私に与えますクライアント、それはプロキシの全体のポイントです。

答えて

0

サーバはおそらく使用済みミドルウェアで正しく処理されない302リダイレクトを返しています。

リダイレクトがどのように機能するか続きを読む:https://en.wikipedia.org/wiki/HTTP_location

あなたはCORSの問題を克服するために、またはあなたが試すことができLocationレスポンスヘッダを変更することができます。

var proxy = require('http-proxy-middleware'); 

var restServerProxy = proxy({target: 'http://restserver:8877', autoRewrite: true}); 

server.use('/rest/api/2/search', restServerProxy); 

上記の例では、自動的にリダイレクトを処理する必要があります。

0

@chimuraiが述べたように、http-proxy-middlewareを使用することもできます。

あなたはCORSを避ける​​ためにHTTPSサーバーへのプロキシにしたい場合:ここで

const proxy = require('http-proxy-middleware'); 

app.use('/proxy', proxy({ 
    pathRewrite: { 
     '^/proxy/': '/' 
    }, 
    target: 'https://server.com', 
    secure: false 
})); 

が確保:偽ニーズをUNABLE_TO_VERIFY_LEAF_SIGNATUREエラーを回避するために設定します。

関連する問題