如何使用jQuery创建AJAX HTTPS GET请求

如何使用jQuery显式发出AJAX HTTPS GET请求? 我正在尝试执行以下操作。 在https页面上,我有一行代码$.get("/resource") ,但是我收到以下错误

 XMLHttpRequest cannot load http://www.site.com/resource. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.site.com' is therefore not allowed access. 

如果相对资源来自https页面,为什么AJAX调用尝试使用HTTP协议访问页面? 如果$ .get(url)方法默认执行此操作,如何使用jQuery执行显式HTTPS GET请求? 另一个有类似问题的人在http://forum.jquery.com/topic/jquery-get-ajax-call-on-http-page-to-https-on-same-domain无法解决它。

jQuery版本是1.7.2

我解决了这个问题。 事实certificate,由于我们的Django站点的配置方式,我需要在AJAX请求中向资源添加一个尾部斜杠。 如果没有斜杠,Django将使用HTTP请求而不是HTTPS请求重定向到带有斜杠的URL。

简而言之,我用$.get("/resource")替换了$.get("/resource/")

谢谢。 我非常感谢你的帮助。

如果您所在的页面是https页面,并且尝试访问的页面.get是http,则由于相同的来源而无法使用。 但是,你可以写出ajax,而不是简单地用.get :)处理它。

 $.ajax({ type: "GET", url: "https://someurl" }); 

虽然我认为公平,但这仍然是一个真正的javascript

尝试将数据类型设置为“jsonp”,这有助于我过去使用跨源请求。

  $.ajax({ url: "//www.site.com/resource" dataType: "jsonp", success: function(data) { $(".demo-card").html(data); } }); 

只需在.htaccess文件中使用指定协议的RewriteRule,例如:

 RewriteCond %{REQUEST_URI} .+[^/]$ RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]