我有一個靜態服務我的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/REST/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阻止,因爲它正在被服務器代理。相反,鉻devtools給了我這樣的:
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,因爲它是從服務器去,而不是客戶端,這是代理的全部要點。