微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 修改JSONP请求的HTTP头

我正在使用jQuery来建立对Twitter Search API的请求。我正在使用jsonp,因为跨域请求是必需的。但是,Twitter API指定您应该为这些请求设置唯一的用户代理,如果没有,则限制您的请求。问题是,我没有办法通过jquery设置这个头。

这是我使用的代码

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

我已经尝试使用beforeSend方法,但似乎这个事件没有触发。任何人都有办法解决这个问题吗?

谢谢。

解决方法

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

不幸的是,没有办法修改页面添加的脚本元素发送的头文件。您唯一可以做的是检查一种跨原始兼容的检索数据的方法,例如:

> 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

原文地址:https://www.jb51.cc/jquery/183387.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐