Oauth服务器重定向成功或错误,使用HTTP重定向或Javascript?

时间:2010-10-06 02:48:35

标签: javascript redirect oauth http-redirect

我通过身份验证的所有Oauth提供程序都会将您重定向到一个页面,上面写着“谢谢,重定向您......”并使用javascript将您重定向到提供的redirect_uri。 我原本以为返回HTTP重定向更简单快捷。为什么总是这样做?

1 个答案:

答案 0 :(得分:0)

根据HTTP 1.1的302位置标题如下所示:

Location       = "Location" ":" absoluteURI
根据{{​​3}},

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

  1. OAuth重定向到http://example.com/oauth#access_token=foo
  2. 我的服务器重定向到https://example.com/oauth
  3. 在第1步和第2步之间,IE8丢弃了片段标识符,而其他一些浏览器则重定向到https://example.com/oauth#access_token=foo

    所以真正的答案是302就可以,只要你不在URL上多次使用它。