jQuery ajax调用重定向到另一个域的域(未遵循)

时间:2012-04-11 20:44:55

标签: ajax jquery cross-domain

这是一个跨域问题,但问题是浏览器(Chrome)似乎没有遵循重定向。相反,没有任何内容返回到jQuery ajax调用,我收到错误。

我正在尝试使用jQuery.ajax,但我正在使用的网址会重定向到另一个域。发生这种情况时,我收到一个错误。是否有任何特殊需要完成,以便浏览器遵循重定向?

我已将access-control-allow-origin: *添加到要重定向到的第二个域的标头中。

2 个答案:

答案 0 :(得分:1)

HTTP重定向页面被视为任何其他HTTP页面,因为它还需要访问控制标头。如果您的重定向页面没有它们,浏览器将永远不会检查被重定向到的页面是否具有适当的权限。

除了重定向页面上的Location标题外,还要添加Access-Control-Allow-Origin标题及其相关成分(即Access-Control-Allow-Methods等)。

答案 1 :(得分:0)

获取跨域ajax调用的唯一方法是使用jsonp。

在jQuery中,将.ajax() dataType设置为'jsonp'。见这里:http://api.jquery.com/jQuery.ajax/

如果重定向到的服务器无法进行jsonp响应,它仍然可能无效。 json响应和jsonp响应之间的区别在于json响应是纯json字符串,而jsonp响应是调用传入json字符串的函数的代码。

一个不太破旧的教程:http://remysharp.com/2007/10/08/what-is-jsonp/

一个很好的讨论:Can anyone explain what JSONP is, in layman terms?