ie8下通过meta方式ASP获取不到来源地址的解决方法

在很多程序中往往会通过检查来源地址来判断是否来源地址安全,一般我们用下面的函数进行对比:

 Public Function CheckPost()

  Dim server_v1, server_v2
  CheckPost = False
  server_v1 = CStr(Request.ServerVariables("HTTP_REFERER"))
  server_v2 = CStr(Request.ServerVariables("SERVER_NAME"))
  
  If Mid(server_v1, 8, Len(server_v2)) = server_v2 Then
   CheckPost = True
  End If
                
 End Function

如果得出的结果是true,则可以继续访问,并且设置一个自动返回的页面,一般是多少秒后,自动返回;如果是false,则不能访问,这在IE6下是行的通的,但是在IE8下用通过meta方式跳转到新页面的时候获取不到来源地址。一般这样只有通过JS跳转来解决问题,下面这段函数,就是用来替换:Response.Write "<meta http-equiv=""refresh"" c;url='" & strFileName & "'>"此类语句。

   Response.Write "<script language=""javascript""> " & vbCrLf
        Response.Write " function nextpage(){" & vbCrLf
        Response.Write "    var url = document.getElementById('rsfreshurl');" & vbCrLf
        Response.Write "    if (document.all) {" & vbCrLf
        Response.Write "      url.click();" & vbCrLf
        Response.Write "    }" & vbCrLf
        Response.Write "   else if (document.createEvent) {" & vbCrLf
        Response.Write "     var ev = document.createEvent('HTMLEvents');" & vbCrLf
        Response.Write "       ev.initEvent('click', false, true);" & vbCrLf
        Response.Write "       url.dispatchEvent(ev);" & vbCrLf
        Response.Write "    }" & vbCrLf
        Response.Write " }" & vbCrLf
        Response.Write " setTimeout(""nextpage();"",3000);" & vbCrLf  ‘这边的3000代表3秒时间跳转,可以改成其他的
        Response.Write "</script>" & vbCrLf
        Response.Write "<a name=""rsfreshurl"" id=""rsfreshurl"" href="&    Request.ServerVariables("HTTP_REFERER") &">"

换上上面的Js跳转,测试通过!



更多
[本日志由 admin 于 2010-08-29 01:50 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: IE8 ie6
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.