Javascript 跨域XMLHttpRequest、访问控制允许源站标头和$#u服务器[';HTTP#u源站';]

Javascript 跨域XMLHttpRequest、访问控制允许源站标头和$#u服务器[';HTTP#u源站';],javascript,php,ajax,cross-domain,Javascript,Php,Ajax,Cross Domain,我需要一个脚本,通过XMLHttpRequest向托管在不同域上的请求页面传递信息。关于这个问题有很多问题和答案,但我发现没有一个完全回答了我的问题 在网上搜索让我发现我必须允许这些域通过类似 标题(“访问控制允许原点:”或 标题(“访问控制允许原点:http://example.com"); 由于我需要不止一个外部域,但我仍然发现*过于开放,进一步的研究使我找到了依靠服务器端将$\u server['HTTP\u ORIGIN']与授权值进行比较的解决方案。(关于StackOverflow:例

我需要一个脚本,通过XMLHttpRequest向托管在不同域上的请求页面传递信息。关于这个问题有很多问题和答案,但我发现没有一个完全回答了我的问题

在网上搜索让我发现我必须允许这些域通过类似
标题(“访问控制允许原点:”
标题(“访问控制允许原点:http://example.com");

由于我需要不止一个外部域,但我仍然发现
*
过于开放,进一步的研究使我找到了依靠服务器端将
$\u server['HTTP\u ORIGIN']
与授权值进行比较的解决方案。(关于StackOverflow:例如)

但是我在php manuel()中没有发现提到
$\u服务器['HTTP\u ORIGIN']
,我的测试显示,这个条目并不总是设置好的

所以我的问题是:
-
$\u服务器['HTTP\u ORIGIN']
超全局设置在什么时候?
-它在全球范围内可靠吗?。。。还是依赖于客户端浏览器?

看起来(但从我的测试/Firefox 34.0.5和ios Safari来看,这只是经验)它只在“需要”时设置,即请求实际上来自另一个域时设置

请参阅下面的简短代码摘录,以帮助理解需求
-如果未定义
$\u服务器['HTTP\u ORIGIN']
则不发送头
(假设它实际上不是跨域调用,应该不会有任何问题),
-如果已定义且属于接受域数组,则发送“允许”标头

if(isset($_SERVER['HTTP_ORIGIN'])) {// in case of cross domain ajax call
    $http_origin = $_SERVER['HTTP_ORIGIN']; 
    if(in_array($http_origin, $ajaxAllowedDomains))
       { header("Access-Control-Allow-Origin: $http_origin"); }
}
$\u服务器['HTTP\u ORIGIN']
超全局设置是什么时候

当HTTP请求包含
头时。浏览器在使用XMLHttpRequest发出跨域请求时将设置一个

它在全球范围内可靠吗


在这种情况下,您可能需要设置CORS响应头。

我们不是来查看您的代码的。我们在这里帮助修复一些编程错误。我不需要代码审查。我在php手册中找不到其他SO问题/答案中引用的$\u服务器条目的帮助。当遇到文档无法帮助的问题时,我认为这里是向其他人寻求帮助的地方。抱歉,如果我弄错了…请进行编辑,以便更清楚地说明问题是关于(据我所知)未记录的php超全局的信息请求,并且没有代码审查请求。谢谢,在CORS上搜索使我能够找到w3规范中所需的所有信息()