问题描述
我有一段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