OAuth服务器重定向成功或错误,使用HTTP重定向或JavaScript?
-
28-09-2019 - |
题
我已认证的所有OAuth提供商都会将您重定向到一个页面上,上面写着“谢谢,重定向您……”,并使用JavaScript将您重定向到提供的Redirect_uri。我以为返回HTTP重定向更简单,更快。为什么总是这样做?
解决方案
根据302的位置标题 HTTP 1.1 看起来这样:
Location = "Location" ":" absoluteURI
absoluteURI
根据 URI通用语法 不包括碎片标识符。一个带有碎片的人称为 URI-reference
:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
细节在 @levik的问题中描述: URL碎片和302个重定向. 。我现在很难学习,但要旨是302片段似乎不适合IE8。
使用JavaScript可能是更可靠的方法,因为您应该通过片段传递访问令牌。
编辑:我现在知道IE8发生了什么。 IE确实尊重位置标题中的片段标识符,但它忽略了来自源URI的片段标识符。我的重定向URL是 http://example.com/oauth
, ,我自动重定向到https, https://example.com/oauth
.
- Oauth重定向到
http://example.com/oauth#access_token=foo
. - 我的服务器重定向到
https://example.com/oauth
.
在步骤1到2之间,IE8扔掉了片段标识符,而其他一些浏览器则重定向到 https://example.com/oauth#access_token=foo
.
因此,真正的答案是302可以,只要您在URL上不使用多次使用它。
不隶属于 StackOverflow