无法通过查询字符串从 url 获取参数



我正在我的网站上实现谷歌登录
问题是,当谷歌将我重定向回我的网站(确认后)时,我无法从查询字符串中获得访问令牌
这是URL:

http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600

我怀疑这个#state=/profile会引起一些问题,但无法处理。
我是不是错过了什么?

如果URL是这样的,请注意Default.aspx后面有#,它不是,那么就没有直接的方法来获取querystring(它们被称为URL片段而不是querystring),它们意味着在客户端进行解析,而服务器端无法访问URL Fragments

http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600

链接包含#,表示网页上的锚、位置。浏览器向服务器发送一个GET请求,该请求只包含整个页面的地址,不包含锚点、片段或其他内容。当服务器返回页面时,浏览器知道将其定位在何处,以便可以看到锚点的位置。在客户端或Javascript中,这是可能的,因为它可以访问锚点。

阅读此-如何从服务器端获取Url哈希(#)

您可以使用

document.URL获取URL。

然后通过#state=/profile&

然后数组的第二部分由&。

然后每个部分按第一个=划分

可能有一个更优雅的解决方案,但这应该有效。

相关内容

  • 没有找到相关文章

最新更新