jquery – 修改JSONP请求的HTTP头

前端之家收集整理的这篇文章主要介绍了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

猜你在找的jQuery相关文章