【发布时间】:2018-08-28 01:25:28
【问题描述】:
我目前遇到一个关于 CORS(跨域资源共享)的问题,奇怪的是这似乎只在我使用 www 为我的网址添加前缀时发生。
例如,当我使用 url 访问我的网站时:“http://example.com/index”一切正常并且所有资源都已正确加载。但是,当我尝试使用网址“http://www.example.com/index”访问我的网站时,我收到错误Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://example.com/index. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
我尝试加载的资源是一个使用以下代码的 XML 文件:
function loadXML()
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
xmlData = xhttp.responseXML;
initStartShot();
}
};
xhttp.open("GET", "http://example.com/XML/someXMLfile.xml", true);
xhttp.send();
}
我所有的资源文件都与我的页面在同一个域中。
我已经四处寻找issues related to mine,但大多数都是关于 CORS 的,以及如何让它工作。但看到我没有任何没有“www”前缀的CORS问题这一事实似乎不适用于我的问题。
很遗憾,我无法分享网址本身,但如果您需要任何其他信息,我会尽力提供。
任何帮助将不胜感激。
~雷米
【问题讨论】:
-
您是否有理由需要使用 www 或者您只是对这个问题感到好奇?当您导航到该站点时,它是否带有
www?您可以使用类似 javascript location.hostname 的内容来获取站点 URL,并在页面的后续部分中使用它。 -
当我在桌面上进行测试时,我在不使用 www 的情况下导航到该站点,但是在移动设备上进行测试时,移动浏览器会自动为 URL 加上 www 前缀,这给了我 cors 错误。我现在添加了一个使用相对路径的答案。我也将使用 location.hostname 添加您的解决方案。感谢您的反馈!
标签: javascript web cors xmlhttprequest