Request.UrlReferrer中文乱码解决方法
程序员文章站
2024-03-06 09:05:01
参考了网络大部分的解决方案,没一个能搞定的,如果穷途末路,试试下面的方法: 将获得的前一页面的url分成两段,后面的参数部分进行编码(直接对url编码是不行的),然后再组合...
参考了网络大部分的解决方案,没一个能搞定的,如果穷途末路,试试下面的方法:
将获得的前一页面的url分成两段,后面的参数部分进行编码(直接对url编码是不行的),然后再组合一下就可以了。
if(!page.ispostback)
{
reurl = page.request.urlreferrer.tostring().split('?')[0].tostring() + httputility.urlencode(page.request.urlreferrer.query,system.text.encoding.getencoding("gb2312"));
if (reurl == null || reurl == "")
{
reurl = httpcontext.current.request.url.pathandquery ;
}
viewstate["reurl"] = reurl;
}
另外注意点的是,返回到前一页时需要进行解码
response.redirect(server.urldecode((string)viewstate["reurl"].tostring()));
在参考解决方案发现了一段比较重要的代码,特别是对于安全性较高的网站来说可能有的作用。
1,在用户改变地址栏的url的参数的时候,提示用户无权执行此操作
把下面代码放在page_load事件里
try
{
string strtemp = request.urlreferrer.pathandquery ;
}
catch
{
throw new exception("你不能修改参数!") ;
}
说明:此方法属于"偏门"方法,利用的是,如果用户修改url的参数,request.urlreferrer
将会得到null,null当然不可能有pathandquery属性了,所以就会抛出一个异常
将获得的前一页面的url分成两段,后面的参数部分进行编码(直接对url编码是不行的),然后再组合一下就可以了。
复制代码 代码如下:
if(!page.ispostback)
{
reurl = page.request.urlreferrer.tostring().split('?')[0].tostring() + httputility.urlencode(page.request.urlreferrer.query,system.text.encoding.getencoding("gb2312"));
if (reurl == null || reurl == "")
{
reurl = httpcontext.current.request.url.pathandquery ;
}
viewstate["reurl"] = reurl;
}
另外注意点的是,返回到前一页时需要进行解码
response.redirect(server.urldecode((string)viewstate["reurl"].tostring()));
在参考解决方案发现了一段比较重要的代码,特别是对于安全性较高的网站来说可能有的作用。
1,在用户改变地址栏的url的参数的时候,提示用户无权执行此操作
把下面代码放在page_load事件里
复制代码 代码如下:
try
{
string strtemp = request.urlreferrer.pathandquery ;
}
catch
{
throw new exception("你不能修改参数!") ;
}
说明:此方法属于"偏门"方法,利用的是,如果用户修改url的参数,request.urlreferrer
将会得到null,null当然不可能有pathandquery属性了,所以就会抛出一个异常