3

在我们的网站中,有些页面是 SSL,有些是非 SSL。

例如:

http://www.example.com/search/patients
https://www.example.com/patients

现在我正在页面上搜索患者并通过功能和http://www.example.com/search/patients发送服务器请求。我无法获取数据。https://www.example.com/patientsjQuery $.ajaxdataType=json

问题:

  1. 当我们在同一台服务器上向 to或tojsonp请求时,我应该使用吗?httphttpshttpshttp

  2. 如果我对两个 URL 都使用 SSL,那么它dataType=json只能使用

谢谢

4

3 回答 3

5

由于同源策略,只有在以下情况下才允许您的 ajax 请求:域名、应用层协议和(在大多数浏览器中)运行脚本的 HTML 文档的端口号相同

在您的情况下,应用层协议不同,这就是您的脚本失败的原因

可能的解决方案是:

  • JSONP,必须由服务器提供

  • CORS,这是一个更“优雅”和干净的解决方案,但 IE 尚未完全支持(IE7 不支持它,IE8 有一些限制)

于 2012-04-25T08:22:15.223 回答
3

如果您对两个 URL 都使用 SSL,它应该可以工作。同样正如@Waqas Raja 所建议的,最好使用相对 URL。

例如$.ajax({url: '/search/patients'})

于 2012-04-25T08:21:14.507 回答
1

您需要使用 CORS、代理或 JSONP 从不同来源获取内容。更改方案(从 http 到 https 或其他方式)正在更改来源。

将数据从安全服务器拉入不安全页面会消除使用 SSL 的许多好处。

如果您通过 SSL 获取页面和数据源,那么您可以使用纯 JSON,并且不会引入这些安全问题。

于 2012-04-25T08:22:24.357 回答