gpt4 book ai didi

jquery - 修改 JSONP 请求的 HTTP header

转载 作者:行者123 更新时间:2023-12-03 21:34:40 25 4
gpt4 key购买 nike

我正在使用 jquery 构建对 Twitter 搜索 API 的请求。我正在使用 jsonp,因为跨域请求需要。但是,Twitter API 指定您应该为这些请求设置唯一的用户代理,如果不这样做,则会限制您的请求。问题是,我看不到通过 jquery 设置此 header 的方法。

这是我正在使用的代码:

$.ajax({
url: 'http://search.twitter.com/search.json',
dataType: 'jsonp',
type: 'get',
data: { q: 'twitter' },
success: function(data) {
alert(data.results);
}
});

我尝试使用 beforeSend 方法,但似乎该事件未触发。谁能想出解决这个问题的方法吗?

谢谢。

最佳答案

带有 Padding 的 JSON 通过向页面添加脚本元素来工作,其中 src 属性指向 Web 服务的 URL。然后,Web 服务返回一个脚本,其中包含包装在回调函数中的数据,该回调函数在脚本完成解析时执行。与其说它是 JSON(一开始它甚至不必是有效的 JSON),不如说它是纯 JavaScript。

遗憾的是,无法修改为添加到页面的脚本元素发送的 header 。您唯一能做的就是检查跨源兼容的检索数据方法,例如:

  • XMLHttpRequest Level 2 - Chrome、Safari 4+、Firefox 3.5+、Opera

    // Is XMLHttpRequest Level 2 supported?
    if ("withCredentials" in new XMLHttpRequest())
  • XDomainRequest - 适用于 IE 8、IE 9

    // Is XDomainRequest supported?
    if ("XDomainRequest" in window)

最好测试这些实现(如果存在)并相应地使用它们,对于不受支持或较旧的浏览器回退到标准 JSONP。

也有可能(但不太可能,因为它的知名度很高)Web 服务未设置为允许跨源请求,因此如果请求失败,您可能仍然需要回退到 JSONP。另请参阅Cross-Origin Resource Sharing .

关于jquery - 修改 JSONP 请求的 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3350778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com