【问题标题】:How to get gzipped jsonp with jQuery's $.getJSON? [duplicate]如何使用 jQuery 的 $.getJSON 获取 gzipped jsonp? [复制]
【发布时间】:2012-05-15 05:35:02
【问题描述】:

可能重复:
Is it possible to force jQuery to make AJAX calls for URLs with gzip/deflate enabled?

我正在使用 jsonp 跨越两个不同的域。 Domain1 使用带有回调参数的 $.getJSON 向 Domain2 询问一些 json 数据,效果很好,没有问题。

Domain2 也可以提供压缩后的 json 数据。

我想利用这个功能,但我不知道如何使用 jQuery 的 $.getJSON 从 Domain1 请求它。

这可能吗?如果可以,请给我一个例子(或任何其他解决方法)。

谢谢!

【问题讨论】:

  • 如果您有一个指定 zip 的 Accept 标头,通常这将由浏览器透明地处理。
  • @Dave-Newton 如何将标头添加到通话中?
  • @PedroFerreira 不确定是否是,跨域是我的问题的一部分,我希望有人能够解释。据我了解,ajax 调用和 jsonp 调用并不完全相同。
  • @user1394625 那就更糟了...... JSONP 请求只是另一个<script> 标签。它将以浏览器认为合适的方式下载。

标签: jquery json cross-domain gzip jsonp


【解决方案1】:

gzip 压缩您的 http 流量是一个服务器选项,它对处理内容的实际进程(在您的情况下是您的脚本)是透明的。浏览器负责 gzipping,但只有在连接的双方都支持它时才会起作用(这在请求标头中进行了通信)。您还必须在服务器端启用它(例如在 apache 中使用 mod_deflate)

您声明 domain2 上的服务器支持 gzipping,因此如果您正确配置它,所有“gzippable”的流量都会自动进行 gzipping。您不需要额外的工作。

如果您想知道您的流量是否被压缩,请查看您的 jsonp 调用的响应标头。他们应该说使用了gzip。例如,您可以在 chrome 中执行此操作。

【讨论】:

  • 谢谢,你是对的。在浏览器已经处理了 gzip 压缩数据之后,我正在检查响应的大小。检查响应标头后,它清楚地表明它已被 gzip 压缩并且要小得多。我只是看的不够仔细……我的错。
  • 好的,没问题。很好,你想通了。
【解决方案2】:

我认为没有办法告诉您的浏览器在这种情况下该做什么。如果这是我们正在讨论的 JSONP 请求,那么由您的浏览器决定发送哪些标头。 JSONP 请求只是另一个<script> 标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2012-01-20
    • 2017-10-20
    • 2016-03-23
    • 2013-10-02
    相关资源
    最近更新 更多