Request.ServerVariables["HTTP_REFERER"]有时候获取不到,怎么回事?

问题描述

我有一段js部署在各个页面上负责采集信息Stat.js---------------------------------------if(typeof(StatImage)=='undefined'){StatImage=newImage;varrefurl=encodeURIComponent(Stat_GetReferrer());StatImage.src="Stat.ashx?r="+refurl+"&sw="+(screen.width)+"&sh="+(screen.height)+"&rad="+(Math.random()*100000);}functionStat_GetReferrer(){varurl=escape(document.referrer);if(url==""&&window.opener!=null){url=window.opener.document.URL;}if(url.length>300){returnurl.substring(0,300);}else{returnurl;}}然后我在Stat.ashx接收处理--------------------------------------stringurl=HttpContext.Current.Request.ServerVariables["HTTP_REFERER"];在10万次请求中,可能有100多次url=null我想问一下,为什么会出现null呢?

解决方案

解决方案二:
可能是提交失败呢。
解决方案三:
referer是来源链接。如果网页是直接输入地址打开的。那么referer为null。
解决方案四:
具体没用过这个东西,LZ可以看看这个,希望对你有帮助下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的:1.直接用<ahref>2.用Submit或<inputtype=image>提交的表单(POSTorGET)3.使用Jscript提交的表单(POSTorGET)下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:1.从收藏夹链接2.单击'主页'或者自定义的地址3.利用Jscript的location.hreforlocation.replace()4.在浏览器直接输入地址5.<%Response.Redirect%>6.<%Response.AddHeader%>或<metahttp-equiv=refresh>转向7.用XML加载地址显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:ref.asp<%response.write"Youcamefrom:"&request.servervariables("http_referer")%>ref.htm<%Response.AddHeader"Refresh","10;URL=ref.asp"%><metahttp-equiv='refresh'content='10;URL=ref.asp'><formmethod=GETaction=ref.aspname=getform><inputtype=submitvalue='Gothere(GET)>>'><inputtype=imagestyle='cursor:hand'></form><p>看看上面的代码会得到什么的结果.<formmethod=POSTaction=ref.aspname=postform><inputtype=submitvalue='Gothere(POST)>>'><inputtype=imagestyle='cursor:hand'></form><p><ahref='ref.asp'>直接链接</a><p><ahref='#'>javascriptPOST</a>
解决方案五:
引用2楼gzdiablo的回复:

referer是来源链接。如果网页是直接输入地址打开的。那么referer为null。

即使是直接打开A页面的如果我在A页面上布上这段代码,StatImage.src="Stat.ashx?r="+refurl+"&sw="+(screen.width)+"&sh="+(screen.height)+"&rad="+(Math.random()*100000);那么执行以后,在Stat.ashx上获取ref,那么应该就是A页面的
解决方案六:
难道一定要我在A页面上先获取到url后然后传给Stat.ashx?u=A.html??
解决方案七:
有谁知道吗?
解决方案八:
另外referer是由浏览器收集并提交的,并不是所有的浏览器会发送这个头。例如:有些蜘蛛或爬虫是不会发送referer的.
解决方案九:
取不到是正常的,很多情况下都是null的,你没有必要纠结在这一点。
解决方案十:
引用8楼net_lover的回复:

取不到是正常的,很多情况下都是null的,你没有必要纠结在这一点。

也就是说丢失一部分数据是正常的
解决方案十一:
我还是用window.location.href去补偿一下吧
解决方案十二:
3楼不是说了吗?像浏览器直接输入url访问就不能得到的。
解决方案十三:
引用11楼net_lover的回复:

3楼不是说了吗?像浏览器直接输入url访问就不能得到的。

问题是我不是直接输入的我是用StatImage.src="Stat.ashx?r="+refurl+"&sw="+(screen.width)+"&sh="+(screen.height)+"&rad="+(Math.random()*100000);这种方式来请求的,那么当前页面的url就会是Stat.ashx的ref这个99%的情况能获取得到,只有那么一点点数据会是null

时间: 2024-09-29 10:33:44

Request.ServerVariables[&amp;quot;HTTP_REFERER&amp;quot;]有时候获取不到,怎么回事?的相关文章

求高手,Request.ServerVariables(&amp;amp;quot;SERVER_NAME&amp;amp;quot;)和Request.ServerVariables(&amp;amp;quot;URL&amp;amp;quot;)有什么区别吗

问题描述 Request.ServerVariables("SERVER_NAME")和Request.ServerVariables("URL")有什么区别吗.求例子说明 解决方案 解决方案二:虽然不清楚,但至少我看SERVER_NAME和URL是完全不同的东东一个是服务器名称,一个是访问的url解决方案三:Request.ServerVariables("SERVER_NAME")这个的意思是获取主机名称或(域名,IP)解决方案四:有高人吗解

Request.ServerVariables应用

本机ip:<%=request.servervariables("remote_addr")%>服务器名:<%=Request.ServerVariables("SERVER_NAME")%>服务器IP:<%=Request.ServerVariables("LOCAL_ADDR")%>服务器端口:<%=Request.ServerVariables("SERVER_PORT")%&g

学习ASP知识之Request.ServerVariables应用

request|server 本机ip:<%=request.servervariables("remote_addr")%>服务器名:<%=Request.ServerVariables("SERVER_NAME")%>服务器IP:<%=Request.ServerVariables("LOCAL_ADDR")%>服务器端口:<%=Request.ServerVariables("SERVER

Request.ServerVariables(HTTP

request|server 下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的:   1.直接用<a href>   2.用Submit或<input type=image>提交的表单(POST or GET)   3.使用Jscript提交的表单(POST or GET) 下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值

jsp truts-&amp;amp;lt;div class=&amp;amp;quot;error_mes&amp;amp;quot;&amp;amp;gt;${message}&amp;amp;lt;/div&amp;amp;gt;

问题描述 <div class="error_mes">${message}</div> ${message}什么意思?${message}通常在哪实现? 解决方案 ${message}是java中el表达式 可以获取域中的值 四大作用域 application request session pageContext 建议百度看下el表达式就ok了 解决方案二: jsp中的EL表达式,具体看下这里面.http://blog.csdn.net/chinacshar

ajax-兄弟伙我的OnSuccess=&amp;amp;quot;afterLogin&amp;amp;quot;咋调用不起

问题描述 兄弟伙我的OnSuccess="afterLogin"咋调用不起 兄弟伙我的OnSuccess="afterLogin"咋调用不起,直接返回return Content类容到页面 @{ Layout = null; } <!DOCTYPE html> 网上超市管理系统 </p> <pre><code> //就是执行controller方法以后执行的方法 function afterLogin(data) {

asp.net Request.ServerVariables参考手册

asp教程.net Request.ServerVariables参考手册 Request.ServerVariables["Url"] 返回服务器地址   Request.ServerVariables["Path_Info"] 客户端提供的路径信息   Request.ServerVariables["Appl_Physical_Path"] 与应用程序元数据库教程路径相应的物理路径   Request.ServerVariables[&qu

asp.net Request.ServerVariables[] 读解_实用技巧

获取客户端的IP地址,代码如下: 复制代码 代码如下: /// <summary> /// 获取客户端IP地址 /// </summary> /// <returns></returns> public string GetClientIP() { string userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (userIP == null) userIP = Re

Request.ServerVariables变量集参考手册

Request.ServerVariables("Url") 返回服务器地址 Request.ServerVariables("Path_Info") 客户端提供的路径信息 Request.ServerVariables("Appl_Physical_Path") 与应用程序元数据库教程路径相应的物理路径 Request.ServerVariables("Path_Translated") 通过由虚拟至物理的映射后得到的路径