【发布时间】:2018-06-16 10:20:37
【问题描述】:
我正在尝试使用 Polymer 和 Node 检索数据,但正在努力获得有效的响应。我收到一个飞行前响应错误,指出不允许使用 access-control-allow-origin。
我在 localhost:4001 上运行 Polymer,在 localhost:8080 上运行 Node。
如何配置节点或客户端以加载响应?
客户
<iron-ajax id="ajaxUser"
url="http://localhost:8080/node/api/mssql/login"
method="post"
handle-as="json"
Content-Type="application/json"
headers='{"Access-Control-Allow-Origin": "*"}'
params="[[params]]"
on-response="saveUserCredentials"
last-response="{{user}}"></iron-ajax>
节点
const corsOptions = {
allowedHeaders: ['Content-Type', 'Access-Control-Allow-Origin']
}
app.options('*', cors(corsOptions))
...
app.use((req, res, next) => { // Enable Cross-Origin Resource Sharing (CORS)
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, x-api-key")
next()
})
错误
加载失败
http://localhost:8080/login?username=user&password=password:
请求的资源上不存在“Access-Control-Allow-Origin”标头。
因此,Origin 'http://localhost:4001' 不允许访问。 响应的 HTTP 状态代码为 400。
【问题讨论】: