[英]Browser doesn't follow redirect from an AJAX response (PHP-generated response is using CAS authentication)
好的,看来我在最初的问题上犯了一个错误。 所以,这里有一些更正。 答案仍然适用,因为当协议更改为 HTTPS (SSL) 时,第二次重定向将停止。
就我而言,我的重定向发生了多次,并且浏览器不遵循第二次重定向。 遵循第一个重定向但返回错误。
我一直在阅读包含重定向的 JavaScript AJAX 响应会自动遵循,但在我看来并非如此。 浏览器自动跟随第一个重定向,返回第一个重定向而不跟随header中的第二个重定向。我的问题是我希望浏览器自动跟随所有重定向。
重定向是 phpCAS 库的一部分。 我有一个 API 写在 PHP 中,每次在返回结果之前检查用户身份验证。
这是顺序。 需要注意的主要事情是,浏览器在执行 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
我在 OpenID 或 OpenAuth(orization) 上使用 CAS 没有特别的原因。 CAS 只是我能够在 WordPress 工作的第一个身份验证模块。我愿意接受有关使用不同的身份验证库、CMS、框架等方面的建议。尽管如此,我希望只完成这个项目。 因此,重新加工越少越好。
正如您后来在评论中添加的那样发现自己,ajax requests are subject to same origin policy 。
是的,您可以使用 JSONP - 但是,如果您有幸只支持 IE8 及更高版本, CORS可能是更好的解决方案。
基本上,添加标题,例如
access-control-allow-origin: http://api.example.com
access-control-allow-credentials: true
对于您的服务器答案,您可以解决跨源策略。
另请参阅此jQuery 票证,使其与 jQuery 兼容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.