Request.ServerVariables(HTTP_REFERER)的工作方式的实验

今天做了个远程图片上传及防盗链的东西,用到了Request.ServerVariables(HTTP_REFERER)和Request.ServerVariables(SERVER_NAME),但对它的具体工作方式还不太了解,今天结合网上的说明,写下我自己的使用感受,记录下来也方便有用得上的朋友。

Request.ServerVariables(HTTP_REFERER) 用以获取访问本页面的上一页面,故存在以下两种情况:

能正常取得Request.ServerVariables("HTTP_REFERER")的情况

  1.直接用<a href> 

  2.用Submit或<input type=image>提交的表单(POST or GET) 

  3.使用Jscript提交的表单(POST or GET)

不能正常取得Request.ServerVariables("HTTP_REFERER")的情况:

  1.从收藏夹链接

  2.单击主页或者自定义的地址

  3.利用jscript的location.href or location.replace()

  4.在浏览器直接输入地址

  5.<%response.redirect%>

  6.<%response.addheader%>或<meta http-equiv=refresh>转向

  7.用xml加载地址

相信大家都能明白上面的意思,下面我要做的测试是为了能让没有写过代码的朋友实际观察它们在程序中具体返回的值。首先我新建个文件:test1.asp (名称随意),程序代码我就选择以上述“直接用<a href>”的情况,

代码为:<a href="https://yangjunwei.com/test2.asp"> 点我 </a>

然后再新建个文件 test2.asp,为了获取返回值,我们把它write出来:

<%

url1 = Request.ServerVariables("HTTP_REFERER")

response.write url1

url2 = Request.ServerVariables("SERVER_NAME")

response.write "<br /><br />"&url2

%>

最后我们运行 http://localhost:1000/test1.asp  点击链接并在 https://yangjunwei.com/test2.asp  中得到以下返回值:

http://localhost:1000/test1.asp

yangjunwei.com

实验结束了,如有其它疑问或讨论有关防盗链的方法,请回复交流!