如何从服务器端获取碎片值
本文关键字:碎片 获取 服务器端 | 更新日期: 2023-09-27 18:25:06
我的url是:
http://localhost:4567/Test/Callback#state=test&access_token=....
但当调用Request.Url.ToString();
时,它只输出
http://localhost:4567/Test/Callback
如何将完整的url发送到服务器?
你不能。
散列(#
)和查询字符串(?
)之间有很大的区别。查询字符串被发送到服务器,而哈希不是。
因此,发送到服务器的url是:http://localhost:4567/Test/Callback
。
将"哈希"发送到服务器的唯一选项是使用查询字符串:
http://localhost:4567/Test/Callback?state=test&access_token=...
var uri = new Uri("http://localhost:4567/Test/Callback#state=test&access_token=....");
// Contains the query
uri.Fragment
结果:
#state=test&access_token=....
编辑:
要获取网站使用的当前url:
Request.Url.AbsoluteUri;
在Request.Url中是当前页面的所有信息,在Request.UrlRefer中是上一页的所有信息。
注意:当没有以前的请求(来自您的网站)时,Request.UrlReferrer为空。
var url=@"http://localhost:4567/Test/Callback#state=test";
var uri = new Uri(url);
var result = uri.Fragment;
其他人已经发布了您特定问题的答案。
但您似乎正在开发一个ASP.NET网站,因此应该考虑使用标准的?
而不是#
作为查询字符串的前缀。
这将允许您使用内置的方法和属性来处理查询字符串,并避免自定义容易出错的字符串处理:
string queryString = Request.Url.Query; // gives you "state=test&access_token=...."
或将其作为NameValueCollection:访问
string state = Request.QueryString["state"]; // gives you "test"
您可以使用javascript获取完整链接,然后将其传递给后面的代码
<script language="javascript" type="text/javascript">
function JavaScriptFunction() {
document.getElementById('<%= hdnResultValue.ClientID %>').value = document.URL;
}
</script>
<asp:HiddenField ID="hdnResultValue" Value="0" runat="server" />
<asp:Button ID="Button_Get" runat="server" Text="run" OnClick="Button_Get_Click" OnClientClick="JavaScriptFunction();" />
然后从后面的代码中获得包含当前完整URL 的hiddenfield的值
protected void Button_Get_Click(object sender, EventArgs e)
{
string fullURL = hdnResultValue.Value;
string URl = fullURL .Substring(fullURL .IndexOf('#') + 1);
}
祝好运