我目前正在使用 jQuery AJAX 获取相对 URL,前面没有方案/域(例如“/js/get_international_popup/”)。当我在返回之前查看位置 header 时,响应也是相对 URL它。
当我通过 HTTP 在本地测试时,一切正常。然而,一旦我在我的实时服务器上测试它,通过 HTTPS 的响应就会被 Chrome 阻止,因为它说它不安全:
Mixed Content: The page at 'https://example.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://example.com/js/get_international_popup/'. This request has been blocked; the content must be served over HTTPS.
从 Chrome 的角度来看,我的本地测试请求/响应通过 HTTP 进行,但我的实时测试请求通过 HTTPS 进行并获得 HTTP 响应。我无法在实时服务器上查看 Chrome 的响应,因为它已被阻止。
如果我返回带有绝对 URL 的响应(包括 https://domain ),一切似乎都工作正常,但我不喜欢使用绝对 URL。
有谁知道是否有办法使用相对 URL 来解决此问题?
最佳答案
使用 javascript 添加此内容:
var relative_url = '/js/get_international_popup/';
var absolute_url = window.location.origin + relative_url;
$.ajax(absolute_url, function(){});
引用: http://www.w3schools.com/jsref/prop_loc_origin.asp
注意: 未测试
关于jquery - 由于混合内容问题 (http/https),XHR 响应被 Chrome 阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181846/