在本地服务器中面临 CORS 错误

Posted

技术标签:

【中文标题】在本地服务器中面临 CORS 错误【英文标题】:Facing a CORS ERROR in local server 【发布时间】:2018-05-25 19:38:12 【问题描述】:

我正在向我在本地的其他域发送带有 XMLHttpRequest 的发布请求,但我收到以下 CORS 错误:

无法加载http://another.local/:“Access-Control-Allow-Origin”标头包含多个值“*、http://example.local”,但只允许一个。因此,不允许访问 Origin 'http://example.local'。

我在 php 中设置了如下标题:

<?php
header("Access-Control-Allow-Origin: *",false); //header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: POST, GET');
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Max-Age: 1000');
header("Content-type:application/json");
readfile('data.json');

尽管设置了标题,但我仍然收到 CORS 错误;我做错了什么,我该如何解决?

【问题讨论】:

sn-p 代码后新的 cors 错误是什么? 试试header('Access-Control-Allow-Origin: *'); 您可能会发现使用 fetch api 更容易 - 它对 CORS developer.mozilla.org/en-US/docs/Web/API/Fetch_API 有适当的支持。如果将 ajax 代码添加到问题中可能会有所帮助 【参考方案1】:

最后,我解决了这个问题。 我使用 Laragon 进行 PHP 开发,但我不知道它的 Laragon 配置或 apache,默认情况下他们在配置文件中设置:

Header always set Access-Control-Allow-Origin "*"

这与我在 PHP 中设置的标头发生冲突。我评论它,可以毫无问题地设置标题。

感谢@Thamaraiselvam 和@rahul-mukherjee 帮助我。

【讨论】:

拯救了我的一天 :) 我将此行添加到我的httpd.conf(在底部)。但它不起作用。我重新启动了一切。【参考方案2】:

你可以试试设置header('Access-Control-Allow-Origin: *');

还要检查你是否有两次相同的标题

【讨论】:

没有区别。加载“another.local”失败:“Access-Control-Allow-Origin”标头包含多个值“*、*”,但只允许一个。因此不允许访问源“'example.local'”。 检查你是否添加了两次相同的标题header('Access-Control-Allow-Origin) 为什么要允许 每个 来源,而不是只允许他自己的域? O.o 感谢您的帮助,但我的另一个 PHP 脚本仅包含 4 行代码。所以两次场景是不可能的。 @Thamaraiselvam 是的,我编辑问题并过去了我所有的 PHP 代码【参考方案3】:

你可以试试 header('Access-Control-Allow-Origin: http://example.local', false);

如果您还没有设置可以使用的 http 方法:

header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header("Access-Control-Allow-Headers: ACCEPT, CONTENT-TYPE, X-CSRF-TOKEN");

注意:请根据您的要求更改值:

【讨论】:

谢谢你,但有/没有 false 仍然得到同样的错误。 您是使用所有的标题还是只使用访问控制?您能否使用所有所需的标题并查看..谢谢!

以上是关于在本地服务器中面临 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

服务器中的 C# webapi Cors Option 请求返回错误 404 未找到

向本地nodeJS服务器发出发布请求时出现AngularJS CORS错误

从本地 html 文件到服务器的 JSON 请求引发 CORS 错误:CORS 策略已阻止从源“null”访问 <URL> 处的 XMLHttpRequest

本地 Javascript 测试 Web 服务 - CORS

Firebase 项目在本地工作,但部署的版本输出 CORS 错误

本地主机已被 cors 策略请求标头字段内容类型阻止访问控制不允许