繁体   English   中英

XMLHttpRequest无法加载“…所请求的资源上没有'Access-Control-Allow-Origin'头。” — jQuery

[英]XMLHttpRequest cannot load “ …No 'Access-Control-Allow-Origin' header is present on the requested resource.” — Jquery

我最近对此请求有疑问。令我最困惑的是,直到将其部署到我的机器上,该问题才会在localhost上发生。 然后,我不得不改变我的代码,以支持跨域请求,如建议在这里

在此之前

 $.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'
        });

两者都可以在我的本地计算机上正常工作。 但是他们在我的开发机器上失败了。 当我在开发浏览器上通过网络检查并检查请求标头时,我意识到托管站点上的请求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

任何帮助,建议或更好的解释将不胜感激。

  1. 要设置的CORS请求者方案以及域。 因此,您需要检查https://js.mysite.com是否已添加到服务器的CORS允许的部分(或使用通配符“ *”)
  2. 您使用默认模式(“ //”),它适合不可抗拒的情况。 将其更改为http会引起安全性问题:大多数浏览器会阻止来自https站点的http请求。 因此,您有两种选择:将您要请求的站点从http更改为,或将CORS请求更改为https://js.mysite ...(首先检查ssl是否存在并且在那里工作)

HTTPS来自提供网页的任何协议。 即,如果您的远程服务器正在强制进行SSL连接,它将使用HTTPS

这是因为//你的url : '//js.mysite.com/javascript.php/',告诉你的客户端使用当前发出请求的网页的协议。

编辑:我的猜测是您的远程服务器不支持HTTPS请求。 您可以启用SSL,或仅在应用程序上使用HTTP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM