ie8下通过meta方式ASP获取不到来源地址的解决方法
作者:admin 日期:2010-08-29
在很多程序中往往会通过检查来源地址来判断是否来源地址安全,一般我们用下面的函数进行对比:
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跳转,测试通过!
上一篇
下一篇

文章来自:
Tags:
相关日志: