ASP.NET中获取URL重写前的原始地址详解

 更新时间:2021年9月22日 10:14  点击:2012

  通常的使用场景是当我们有某个页面需要用户登录才能访问时,我们会在代码中判断当前访问用户是否登录,如果未登录,则重定向至登录页面,并将当前网址通过Url参数传递给登录页面。如果使用了URL重写,并通过Request.Url.AbsoluteUri获取当前网址,用户登录后打开的就是重写后的地址,这虽然不影响正常使用,但从用户体验及URL统一的角度,我们更希望是重写前的地址。

  之前,我们在开发中也被这个问题困扰,只能尽量通过js重定向至登录页面(通过location.href获取当前网址)或者在代码中手动写返回地址。

  现在,我们找到了解决方法,可以从Request.Headers中找到重写前的网址。

  1)如果重写组件用的是ISAPI_Rewrite,则访问被重写的网址时,Headers中会增加一项数据:Key为X-Rewrite-URL,值为重写前的网址。

  2)如果重写组件用的是IIS自带的URL Rewrite模块,则Headers中增加的信息的Key为X-Original-URL。

  这样我们就可以轻松获取重写前的网址,示例代码如下:

复制代码 代码如下:

if (Request.Headers["X-Rewrite-URL"] != null)
{
    Response.Write("http://" + Request.Url.Host + Request.Headers["X-Rewrite-URL"]);
}
else if (Request.Headers["X-Original-URL"] != null)
{
    Response.Write("http://" + Request.Url.Host + Request.Headers["X-Original-URL"]);
}

[!--infotagslink--]

相关文章

  • C# 如何解析获取Url参数值

    这篇文章主要介绍了C# 如何解析获取Url参数值,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2020-09-01
  • 使用JavaScript获取URL中的参数(两种方法)

    这篇文章主要介绍了使用JavaScript获取URL中的参数(两种方法)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-11-22
  • C# 重写ComboBox实现下拉任意组件的方法

    C#种的下拉框ComboBox不支持下拉复选框列表与下拉树形列表等,系统中需要用到的地方使用了第三方组件,现在需要将第三方组件替换掉。这篇文章主要介绍了C# 重写ComboBox实现下拉任意组件的相关资料,需要的朋友可以参考下...2020-06-25
  • C#中重载与重写区别分析

    这篇文章主要为大家详细介绍了C#中重载与重写的区别,感兴趣的小伙伴们可以参考一下...2020-06-25
  • c#动态改变webservice的url访问地址

    这篇文章主要介绍了c#动态改变webservice的url访问地址,需要的朋友可以参考下...2020-06-25
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • node.js如何根据URL返回指定的图片详解

    这篇文章主要介绍了NODE.JS如何根据URL返回指定的图片详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-21
  • C# URL短地址压缩算法及短网址原理解析

    这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下...2020-06-25
  • PHP CURL CURLOPT参数说明(curl_setopt)

    CURLOPT_RETURNTRANSFER 选项:curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);如果成功只将结果返回,不自动输出任何内容。如果失败返回FALSEcurl_setopt($ch, CURLOPT_RETURNTRANSFER,0); 或着不使用这个选项:如果成功只...2013-10-04
  • js获取url页面id,也就是最后的数字文件名

    这篇文章主要介绍了js获取url页面id,也就是最后的数字文件名,有时候我们需要判断当前页面的id,又不用重新生成页面直接用js获取最后的数字.htm即可...2020-09-25
  • .Net获取URL中文参数值的乱码问题解决方法总结

    这篇文章主要介绍了.Net获取URL中文参数值的乱码问题解决方法,总结分析了针对URL参数传递中出现的乱码问题与相应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • C#实现自动识别URL网址的方法

    这篇文章主要介绍了C#实现自动识别URL网址的方法,涉及C#操作URL地址的相关技巧,需要的朋友可以参考下...2020-06-25
  • C#Url操作类封装、仿Node.Js中的Url模块实例

    这篇文章主要介绍了C#Url操作类封装、仿Node.Js中的Url模块,实例分析了C#Url操作类封装的技巧,非常具有实用价值,需要的朋友可以参考下。...2020-06-25
  • php获取客户端IP及URL的方法示例

    这篇文章主要介绍了php获取客户端IP及URL的方法,涉及php预定义服务器变量$_SERVER相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2017-02-09
  • C++填坑的重写,重载和隐藏的详解

    这篇文章主要介绍了C++中重载、重写(覆盖)和隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下,希望能够给你带来帮助...2021-09-18
  • MySQL 重写查询语句的三种策略

    这篇文章主要介绍了MySQL 重写查询语句的三种策略,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下...2021-05-10
  • PHP Curl模拟登录微信公众平台、新浪微博实例代码

    这篇文章主要介绍了PHP Curl模拟登录微信公众平台、新浪微博实例代码的相关资料,涉及到php curl模拟登录相关知识,需要的朋友可以参考下...2016-02-01
  • asp.net url重写的好处与方法

    asp.net url重写的好处与方法,需要的朋友可以参考一下...2021-09-22
  • 两种方法解决javascript url post 特殊字符转义 + & #

    本文主要介绍javascript使用url传值的时候数据丢失的问题,希望对大家有所帮助。...2016-04-16
  • php快速url重写更新版[需php 5.30以上

    类只能php教程 5.30以上的版本才能使用,继承了上一个版本的快速重定向的特点(单独类,全部使用静态调用),增添了一个很重要的功能和属性 可以调用其他url中的模块了 也...2016-11-25