9

我目前正在使用 jQuery AJAX 获取一个相对 URL,它前面没有方案/域(例如,'/js/get_international_popup/'。当我在返回之前查看我的位置标头时,响应也是一个相对 URL。

当我在本地通过 HTTP 进行测试时,一切正常。但是,一旦我在我的实时服务器上测试它,通过 HTTPS 响应就会被 Chrome 阻止,因为它说它不安全:

混合内容:“ https://example.com/ ”页面通过 HTTPS 加载,但请求了不安全的 XMLHttpRequest 端点“ http://example.com/js/get_international_popup/ ”。此请求已被阻止;内容必须通过 HTTPS 提供。

从 Chrome 的角度来看,我的本地测试请求/响应通过 HTTP,但我的实时测试请求通过 HTTPS 并获得了 HTTP 响应。我无法在实时服务器上查看 Chrome 的响应,因为它被阻止了。

如果我返回带有绝对 URL(包括https://domain)的响应,一切似乎都可以正常工作,但我不喜欢使用绝对 URL。

有谁知道是否有办法使用相对 URL 来解决这个问题?

4

2 回答 2

1

使用 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

注:未测试

于 2016-05-11T10:19:50.620 回答
0

有时它可能是由尾部斜杠引起的。更改https://example.com/js/get_international_popup/https://example.com/js/get_international_popup

于 2020-02-27T10:16:36.477 回答