CORS 的问题:浏览器和 CURL 工作,但 XMLHttpRequest 不 [重复]

Posted

技术标签:

【中文标题】CORS 的问题:浏览器和 CURL 工作,但 XMLHttpRequest 不 [重复]【英文标题】:Problem with CORS : Browser and CURL work but XMLHttpRequest don't [duplicate] 【发布时间】:2020-04-29 01:21:40 【问题描述】:

网络服务器在我的本地网络上运行。让我们说: http://192.168.1.12

当我用浏览器访问这个网址时,它工作正常。

当我使用 curl (zsh) 访问此 url 时,它也可以正常工作:

curl -s "http://192.168.1.12/"

但是当我尝试使用带有 XMLHttpRequest 的 javascript 时:

var x = new XMLHttpRequest();
x.open("GET", "http://192.168.1.12/", true);
x.send(null);

失败(错误信息已翻译): 缺少 CORS 标头“Access-Control-Allow-Origin”。

我无法修改服务器行为,但我认为我不需要,因为它与 curl 一起使用。 我应该在我的 javascript 代码中添加什么以使其正常工作?

【问题讨论】:

【参考方案1】:

如果你不能修改你的服务器行为,那你就完蛋了。现代网络浏览器对跨源实施安全检查。如果没有正确的 CORS(Access-Control-Allow-Origin 标头必须存在于服务器 http 响应中),则无法从另一个域调用服务器。这是一个后端错误。 此外,如果您真的需要继续使用它,您可以在浏览器上安装扩展程序来停用 CORS 安全性,但我不推荐它。

【讨论】:

以上是关于CORS 的问题:浏览器和 CURL 工作,但 XMLHttpRequest 不 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

CORS 上传文件到 S3,得到 SignatureDoesNotMatch 错误

使用 CORS 到 API 网关的 AJAX POST 不起作用,但可以使用 CURL 进行 POST

使用 CURLOPT_HTTPHEADER 设置 CURL 标头会产生 CORS 问题

复制实例后 CORS 无法正常工作

烧瓶 Cors 不工作

计算机阻止 CORS 选项请求