我最近遇到了这个请求的问题。最让我困惑的是,直到我部署到我的机器上,这个问题才出现在localhost上。然后,我被迫更改代码以支持跨域请求,如Here所建议的那样。
在之前
$.get('//js.mysite.com/javascript.php', options, function(xml) {
$(xml).find('item').each(function(idx) {
.....
},
'xml'
);
现在我换成
$.ajax({
type : 'GET',
url : '//js.mysite.com/javascript.php/',
data : options,
dataType : 'xml',
success : function(xml) {
.....
},
jsonp: 'jsonp'
});
两者在我的本地机器上都能正常工作。然而,它们在我的开发机器上失败了。当我在dev浏览器上的网络下进行检查,并通过请求标头进行检查时,我意识到托管网站上的请求URL以的形式返回
Request Url https://js.mysite.com/javascript.php?prefix=prefix&media=2&campaign=15&mode=txt
和我的本地机器
Requst Url http://js.mysite.com/javascript.php?prefix=prefix&media=2&campaign=15&mode=txt
当我从托管网站返回的链接中将https更改为http时,它运行良好。我的问题是https从哪里来?考虑到它在我的托管网站上返回https,在本地返回http,我如何更改我的代码以支持这些更改。托管站点返回404错误,并返回错误消息xmlhttprequest cannot load no 'access-control-allow-origin' header is present on the requested
。
如有任何帮助、建议或更好的解释,我们将不胜感激。
- CORS要求设置方案以及域。所以你需要检查一下https://js.mysite.com添加到服务器的CORS允许部分(或使用通配符"*")
- 您使用默认模式("//"),它适合大多数情况。将其更改为http将导致安全问题:大多数浏览器都会阻止来自https网站的http请求。所以您有两种选择:将请求的站点更改为http,或者允许CORS请求https://js.mysite...(首先检查ssl是否存在并在那里工作)
HTTPS
来自网页所使用的任何协议。即,如果您的远程服务器正在强制SSL连接,它将使用HTTPS
。
这是因为url : '//js.mysite.com/javascript.php/',
上的//
告诉您的客户端使用当前正在发出请求的网页的协议。
edit:我的猜测是您的远程服务器不支持HTTPS请求。您可以启用SSL,也可以在应用程序上简单地使用HTTP。