我通过身份验证的所有Oauth提供程序都会将您重定向到一个页面,上面写着“谢谢,重定向您......”并使用javascript将您重定向到提供的redirect_uri。 我原本以为返回HTTP重定向更简单快捷。为什么总是这样做?
答案 0 :(得分:0)
根据HTTP 1.1的302位置标题如下所示:
根据{{3}},Location = "Location" ":" absoluteURI
absoluteURI
不包含片段标识符。带有片段的那个叫做URI-reference
:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
详细信息在@ levik的问题中描述:URI Generic Syntax。我现在正在努力学习它,但要点是带有片段的302似乎不适用于IE8。
使用Javascript可能是更可靠的方式,因为您假设通过片段传递访问令牌。
修改强>:
我现在知道IE8发生了什么。 IE确实尊重Location头中的片段标识符,但它忽略了源URI中的片段标识符。我的重定向网址为http://example.com/oauth
,我自动重定向到http s ,https://example.com/oauth
。
http://example.com/oauth#access_token=foo
。https://example.com/oauth
。在第1步和第2步之间,IE8丢弃了片段标识符,而其他一些浏览器则重定向到https://example.com/oauth#access_token=foo
。
所以真正的答案是302就可以,只要你不在URL上多次使用它。