需要从localhost发出cors请求 - 标准解决方案似乎没有按预期工作

问题描述 投票:2回答:1

我需要从localhost发出一个CORS请求。我安装并启用了Allow-Control-Allow-Origin Chrome插件,当我将鼠标悬停在菜单项上时显示:“Allow-Control-Allow-Origin:*”。我创建了一个包含以下内容的.bat文件:

start chrome http://localhost:8080/MyPage.html --disable-web-security --user-data-di

这会在预期的网址上打开一个新的Chrome实例,但CORS请求仍然失败,并显示以下错误:

Failed to load [rest-url]: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.

你能为此推荐一些解决方法吗?

javascript google-chrome
1个回答
0
投票

你能展示代码并给我们一些关于你正在使用的技术等的更多信息吗?

看起来你没有发送“预检” - 请求,你的预检请求不包含所需的标题,或者你的遥控器没有返回正确的标题:

例如,假设浏览器使用以下标头发出请求:

Origin: http://yourdomain.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-Custom-Header

然后,您的服务器应使用以下标头进行响应:

Access-Control-Allow-Origin: http://yourdomain.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: X-Custom-Header

致谢:@ Mansur

另见:CORS - How do 'preflight' an httprequest?

Access-Control-Request-Headers需要包含您发送真实请求的所有自定义标头,否则它将失败。至少对我来说,错误信息有点神秘,并不总是指向正确的方向。

© www.soinside.com 2019 - 2024. All rights reserved.