好吧,我的初步问题看起来好像错了。所以,这里有一些更正。答案仍然适用,因为当协议更改为HTTPS(SSL)时,第二个重定向将停止。
在我的情况下,我有多次重定向,浏览器不遵循第二次重定向。 遵循第一个重定向但返回错误。
我一直在阅读包含重定向的JavaScript AJAX响应会自动跟踪,但看起来不像我的情况。浏览器会自动跟随第一个重定向,并返回第一个重定向,而不会跟随标题中的第二个重定向。我的问题是我希望浏览器自动遵循所有重定向。
重定向是phpCAS库的一部分。我有一个用PHP编写的API,每次都会在返回结果之前检查用户身份验证。
这是序列。需要注意的主要事情是浏览器在执行1次重定向后返回第二个响应。当我向localhost/example/api
发出一个AJAX调用时,我希望它一直向前并返回最后一个响应。
本地主机/实例
localhost/example/api
响应1:localhost / example / api
https://localhost/accounts/cas/login?service=api.example.com&gateway=true
(使用SSL)。响应2:(SSL)localhost / accounts / cas / login?service = api.example.com& gateway = true
响应3:localhost / api?ticket = TICKET
响应4:localhost / api
没有特别的原因我使用CAS而不是OpenID或OpenAuth(orization)。 CAS只是我能够在WordPress中工作的第一个身份验证模块。我对使用不同的身份验证库,CMS,框架等方面的建议持开放态度。虽然,我希望能够完成这个项目。所以重新加工越少越好。
答案 0 :(得分:6)
正如您后来发现自己在评论中添加的那样,ajax请求受same origin policy的约束。
是的,您可以使用JSONP - 但是,如果您有幸只支持IE8及更高版本,CORS可能是更好的解决方案。
基本上,添加标题,例如
access-control-allow-origin: http://api.example.com
access-control-allow-credentials: true
到您的服务器答案,您可以解决跨原始政策。
另请参阅此jQuery ticket以使其与jQuery一起使用。