XMLHttpRequest无法加载“..否'访问控制允许来源'标头存在于请求的资源上"——J

XMLHttpRequest cannot load " ...No 'Access-Control-Allow-Origin' header is present on the requested resource." -- Jquery

本文关键字:请求 于请求 资源 存在 quot 加载 访问控制 XMLHttpRequest      更新时间:2023-09-26

我最近遇到了这个请求的问题。最让我困惑的是,直到我部署到我的机器上,这个问题才出现在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

如有任何帮助、建议或更好的解释,我们将不胜感激。

  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/',上的//告诉您的客户端使用当前正在发出请求的网页的协议。

edit:我的猜测是您的远程服务器不支持HTTPS请求。您可以启用SSL,也可以在应用程序上简单地使用HTTP。

相关文章: