【发布时间】:2018-09-01 03:37:16
【问题描述】:
所以我已经阅读了所有其他帖子,例如
但这两种解决方案都不适合我。
所以我有以下 JavaScript 代码
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "react.php?do=getnotify&rand=" + Math.random(), true);
xhttp.setRequestHeader("Access-Control-Allow-Origin", "http://mydomainname.net");
xhttp.send();
我仍然收到错误消息
(index):1 加载失败 http://mydomainname.net/react.php?do=getnotify&rand=0.10280796901744726: 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://mydomainname.net” 访问。
仅当用户通过 mydomainname.net
访问该网站时才会发生这种情况
如果用户通过 www.mydomainname.net 访问该站点,则 Ajax 请求工作正常 - 没有问题。
那么是什么给了???
【问题讨论】:
-
Access-Control-Allow-Origin 是响应标头,而不是请求标头。你不能从你的前端 JavaScript 代码中设置它。相反,您发出请求的服务器需要发送 Access-Control-Allow-Origin。但是问题中显示的代码不会导致问题中显示的错误消息 - 因为这不是跨域请求。
-
问题中显示的错误信息中的 URL 没有意义;浏览器永远不会报告 Failed to load
http://mydomainname.net/react.php?…… Origin 'http://mydomainname.net' 的消息 - 因为http://mydomainname.net/react.php?…与http://mydomainname.net具有相同的来源,所以这不会是交叉-origin 请求,因此您不会收到该错误消息。 -
@sideshowbarker 我不知道...它是我的主机...所以如果您有任何建议,我可以将任何我想要的内容添加到 .htaccess。该脚本位于该站点的主页上,因此....就像我说的,如果您通过键入 www.mydomainname.net 访问该站点的主页,那么该脚本可以正常工作...如果您通过键入 mydomainname.net 访问主页,那么脚本将失败,因为我猜服务器认为
http://mydomainname.net/blahblah是一个外部请求,而它认为 @ 987654331@ 内部请求....基本上我猜有什么建议? -
另外:由于 javascript 会自动将地址栏中的域添加到 Ajax
/react.php ....引用,因此几乎不可能确保 www在 Ajax 地址中。所以我想问题是......如何让浏览器/服务器接受对http://mydomainname.net/blahblah的调用,而不仅仅是http://www.mydomainname.net/blahblah? -
@sideshowbarker 有什么建议吗?