错误:不存在“Access-Control-Allow-Origin”标头。即使我添加了它
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:不存在“Access-Control-Allow-Origin”标头。即使我添加了它相关的知识,希望对你有一定的参考价值。
我正在Unity中构建一个应用程序并导出到html5。当我尝试发出一个简单的GET请求时,我收到此错误:
从'http://example.co.uk/request.php?foo=bar'访问'http://anothersite.co.uk'的XMLHttpRequest已被CORS策略阻止:请求的资源上没有'Access-Control-Allow-Origin'标头。
我在论坛上看到了许多问题,人们给出了这些答案(正如我对它们的解释):
- 您请求的服务器/站点应设置标题,以接受您请求的特定域或仅将其设置为通配符
- 在浏览器中禁用Web安全性
- 使用代理,例如https://cors-anywhere.herokuapp.com
第一个对我有意义,但我在服务器端尝试了以下内容无济于事:
- 在.htaccess文件中设置标头。例如Header Set Access-Control-Allow-Origin“*”
- 在“请求”php文件中设置标题:header('Access-Control-Allow-Origin:http://anothersite.co.uk'); (我也试过“*”)
- 我尝试在Unity代码中的“anothersite.co.uk”请求中发送标题。
- 我通过传递URL来尝试人们对https://cors-anywhere.herokuapp.com的建议,但这并不适用于所有,也许我很想念它。我真的不喜欢这个作为解决方案..使整个事情看起来毫无意义。
任何提示都会有所帮助,如果我误解了整个事情,我很抱歉,但我无法做出头或尾......我只是继续得到上面显示的相同错误。
在此先感谢您的帮助! :)
答案
我使用以下PHP代码的版本来提供数据,它似乎工作。
if (isset($_SERVER['HTTP_ORIGIN'])) {
// Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one
// you want to allow, and if so:
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
// may also be using PUT, PATCH, HEAD etc
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
以上是关于错误:不存在“Access-Control-Allow-Origin”标头。即使我添加了它的主要内容,如果未能解决你的问题,请参考以下文章