对预检 403 禁止的响应

DVM*_*DVM 4 ajax cors preflight polymer polymer-2.x

我一直在尝试iron-ajax向服务器发送一个简单的帖子,但在飞行前调用时它一直失败。对于我的一生,我无法弄清楚发生了什么,服务器上的所有 CORS 标头似乎都是正确的。

Response headers

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET, POST, PUT, OPTIONS
Access-Control-Allow-Origin:*
cache-control:must-revalidate, private, no-cache, no-store, max-age=0
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:138
Content-Type:text/html
Run Code Online (Sandbox Code Playgroud)

Request headers

Accept:*/*
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:POST
Cache-Control:no-cache
Connection:keep-alive
Run Code Online (Sandbox Code Playgroud)

该请求确实是从本地主机发出的,但我认为应该*处理这个问题。

控制台中显示的错误是: OPTIONS https://... 403 (Forbidden)

XMLHttpRequest cannot load https://.... Response for preflight has invalid HTTP status code 403
Run Code Online (Sandbox Code Playgroud)

任何帮助/建议表示赞赏。

sid*_*ker 5

403 响应状态表示服务器后端未配置为处理OPTIONS请求(而不仅仅是 CORS 预检OPTIONS请求)的普遍问题。

\n

服务器必须OPTIONS以 2xx 成功状态\xe2\x80\x94(通常为 200 或 204)响应请求。

\n

如果服务器不\xe2\x80\x99 这样做,那么Access-Control-*你配置它发送什么标头就没有什么区别。配置它OPTIONS以正确的方式处理请求以发送 200 或 204 成功消息 xe2x80x94 的答案取决于它运行的服务器软件。

\n

  • 如果您的意思是对 POST 请求的响应在 Postman 中工作正常,这是预期的,因为 Postman 在尝试 POST 请求之前不会发出预检 OPTIONS 请求,因为只有浏览器才会发出预检 OPTIONS 请求,并且仅针对 XHR/ 发出的请求从特定来源的浏览器中运行的前端 JavaScript 代码获取/Ajax 调用(Postman 不是)。但是,如果您说您尝试在 Postman 中发出 OPTIONS 请求,但没有收到 403,那么是的,这将表明存在不同的问题 (2认同)