У меня есть экспресс-сервер, статически обслуживающий мой проект 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: 8877/отдых/API/2/поиска в браузере он возвращает кучу JSON как поиск «по умолчанию».
На стороне клиента, у меня есть железо-Аякса делает этот запрос:
<iron-ajax
id="getBugs"
url="/rest/api/2/search"
params=''
on-response="handleResponse"
debounce-duration="300">
</iron-ajax>
И в разделе сценария, я использую this.$.getBugs.generateRequest()
в функции ready
, чтобы отправить запрос. Поэтому я загружаю это, ожидая, что запрос не будет заблокирован CORS, поскольку ... он проксируется сервером. Вместо этого, Chrome 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.
Я не понимаю, почему это дает мне эти URL-адреса, так как я никогда не ссылаться на них, и почему он блокирует из-за CORS, так как это происходит с сервера, а не клиент, что является целым рядом с прокси-сервером.