我已认证的所有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.

  1. Oauth重定向到 http://example.com/oauth#access_token=foo.
  2. 我的服务器重定向到 https://example.com/oauth.

在步骤1到2之间,IE8扔掉了片段标识符,而其他一些浏览器则重定向到 https://example.com/oauth#access_token=foo.

因此,真正的答案是302可以,只要您在URL上不使用多次使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top