我正在Unity中构建应用程序并导出到HTML5。当我尝试发出简单的GET请求时,出现此错误:
访问“ http://example.co.uk/request.php?foo=bar”处的XMLHttpRequest 来自来源“ http://anothersite.co.uk”的信息已被CORS阻止 策略:“访问控制允许来源”标头不存在 请求的资源。
我在论坛上看到了很多问题,人们对此做出了回应(据我解释):
您请求的服务器/站点应该设置标头,以接受您请求的特定域,或者只是将其设置为通配符
在浏览器中禁用网络安全性
第一个对我来说很有意义,但我在服务器端尝试了以下操作,但无济于事:
在.htaccess文件中设置标题。例如标头集Access-Control-Allow-Origin“ *”
在“请求” php文件中设置标头:header('Access-Control-Allow-Origin:http://anothersite.co.uk'); (我也尝试过“ *”)
我尝试在Unity代码的“ anothersite.co.uk”请求中发送标头。
我尝试了人们对https://cors-anywhere.herokuapp.com的建议,方法是将URL传递给它,但这根本没有用,也许我误会了它。无论如何,我真的不喜欢这样作为解决方案..使整个事情变得毫无意义。
任何提示都将真正有帮助,对不起,如果我对整个事情都没有理解,我感到很抱歉,但是我无法做出正确的决定。.我只是不断地收到上面显示的相同错误。
在此先感谢您的帮助! :)
答案 0 :(得分:0)
我使用以下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);
}