【问题标题】:When to use json and when jsonp with jquery $.ajax?何时使用 json 以及何时使用 jsonp 与 jquery $.ajax?
【发布时间】:2012-05-05 21:51:35
【问题描述】:

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

例如:

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

现在我在http://www.example.com/search/patients 页面上搜索患者,并通过jQuery $.ajax 函数和dataType=jsonhttps://www.example.com/patients 发送服务器请求。我无法获取数据。

问题:

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

  2. 如果我对两个 URL 都使用 SSL,那么它是否仅适用于 dataType=json

谢谢

【问题讨论】:

  • 我猜AJAX请求可以通过相对路径而不是绝对路径进行。

标签: php jquery ajax cakephp jsonp


【解决方案1】:

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

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

可能的解决方案是:

  • JSONP,需服务器提供

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2010-11-25
        • 2011-12-10
        • 2014-04-14
        • 2010-11-04
        • 2012-03-13
        • 2015-01-07
        • 2016-09-23
        • 2021-02-09
        相关资源
        最近更新 更多