修改 JSONP 请求的 HTTP 标头

18 浏览
0 Comments

修改 JSONP 请求的 HTTP 标头

我正在使用jquery构建一个请求Twitter搜索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);
    }
});

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

谢谢。

0
0 Comments

问题的原因是:在这段代码中,使用了`jQuery.ajax()`方法进行异步请求获取Google联系人的数据。然而,由于浏览器的安全策略限制,跨域请求时需要在HTTP头部中添加特定的信息,以便服务器能够正确处理请求。而这段代码中没有在HTTP头部中添加必要的信息,导致请求失败。

解决方法是:在发起请求之前,需要修改HTTP头部,添加必要的信息。具体来说,需要在请求的数据对象`token`中添加`alt`字段,并将其值设置为`'json'`。通过这样的修改,请求的数据将以JSONP的形式发送给服务器,从而绕过浏览器的安全限制,成功获取到Google联系人的数据。

为了解决这个问题,需要在代码中添加如下修改:

token.alt = 'json';

0
0 Comments

问题的原因是无法修改添加到页面的脚本元素的头部信息。解决方法是检查是否存在支持跨域请求的方法,如XMLHttpRequest Level 2和XDomainRequest,并根据支持情况选择使用相应的方法或回退到标准的JSONP。如果请求失败,可能需要使用一个在PHP中编写的包装脚本来获取数据,并在这种情况下可以缓存搜索结果。

0