无法从url读取fraqment参数

时间:2013-12-04 07:56:07

标签: c# asp.net-mvc oauth-2.0 vk

我正在与vk.com集成。他们的文档说明您将在授权后重定向到下一个URL

http://REDIRECT_URI#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492 

重定向发生但我没有看到access_token,expires_in和user_id变量。我调查了HttpContext并没有找到这些参数。 这个HttpContext.Request.Url只显示了我没有#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492

的网址

但是如果我用#替换#字符?在网址中它按预期工作。

我正在使用ASP.NET MVC中的vk api。有人知道如何获得这些参数吗?

2 个答案:

答案 0 :(得分:1)

不能读取片段,因为它没有发送到服务器(并且VK可能这样做是为了提高auth进程的安全性)你的选择是use JavaScript

<script>
  if(window.location.hash) {
      //Puts hash in variable, and removes the # character
      var hash = window.location.hash.substring(1); 
      // hash found
      alert (hash);
  } else {
      // No hash found
  }
</script>

答案 1 :(得分:0)

遗憾的是,Fragment未传递给服务器。

当您尝试从Request.Uri.Fragment获取时,它将始终为空。

没有简单的方法可以在服务器上获取片段。 您必须使用javascript来检索片段并将其发送到服务器,或者使用AJAX,或者您可以创建一个读取片段的中间页面,并将用户重定向到另一个页面,并将片段替换为查询字符串。

中间页面可能类似于:

if(window.location.hash) {
    window.location= '/yoururl.htm' + window.location.hash.replace('#','?');
}