在我们的网站中,有些页面是SSL,有些页面是非SSL。
例如:
http://www.example.com/search/patients
https://www.example.com/patients
现在,我正在http://www.example.com/search/patients
页面上搜索病人,并通过https://www.example.com/patients
函数和jQuery $.ajax
向dataType=json
发送服务器请求。我无法获取数据。
问题:
当我们从同一服务器上的jsonp
http
或https
到https
请求时,我应该使用http
吗?
如果我对两个网址都使用SSL,那么它只适用于dataType=json
由于
答案 0 :(得分:5)
由于Same Origin Policy,只有在以下情况下才允许您的ajax请求: 域名,应用层协议和(在大多数浏览器中)端口 运行脚本的HTML文档的编号是相同的
在您的情况下,应用程序层协议不同,这就是您的脚本失败的原因。
可能的解决方案是:
答案 1 :(得分:3)
如果您对两个网址都使用SSL,那么它应该有效。同样@Waqas Raja建议,最好使用相对URL。
e.g。 $.ajax({url: '/search/patients'})
答案 2 :(得分:1)
您需要使用CORS,代理或JSONP来获取来自不同来源的内容。改变方案(从http到https或其他方式)正在改变原点。
将数据从安全服务器拉入不安全的页面消除了使用SSL的许多好处。
如果您通过SSL获取页面和数据源,那么您可以使用普通的JSON并且不会引入这些安全问题。