[英]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.