修改JSONP请求的HTTP标头

Dan*_* D. 27 jquery user-agent jsonp http-headers

我正在使用jquery来构建对Twitter Search API的请求.我正在使用jsonp,这是跨域请求所需要的.但是,Twitter API指定您应为这些请求设置唯一的User-Agent,如果不这样做,则会限制您的请求.问题是,我认为无法通过jquery设置此标头.

这是我正在使用的代码:

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

我尝试过使用beforeSend方法,但看起来这个事件没有被触发.任何人都可以想出任何解决这个问题的方法吗?

谢谢.

And*_*y E 55

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

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

如果它们存在并且相应地使用它们,那么测试这些实现将是一个好主意,对于不支持的或旧的浏览器,回退到标准JSONP.

也可能(但不太可能,因为它很高调)Web服务未设置为允许跨源请求,因此如果请求失败,您可能仍然必须回退到JSONP.另请参见跨源资源共享.