有时我们会在搜索引擎查找到一些要下载的软件,当我们从搜索结果的超链接转到下载页面时,下载站点会显示:您的连接并非来自本站……,之类云云。那目标站 点是如何判断我们的链接不是来自自己的站点的呢?其实,HTTP协议规定,当请求一个页面时,必须将指向该页面的URL包含在HTTP头中,也就是说,你 必须告诉服务器你是从那里来的。当我们从搜索引擎的链接连过去时,浏览器会老老实实地把搜索引擎的结果页面的URL发送到目标服务器。以下是IE浏览器发 送的HTTP头的完整信息:
GET /test.htm HTTP/1.1
Accept: */*
Referer: http://www.20cn.net/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0)
Host: localhost
Connection: Keep-Alive
其中referer头标注了我们的链接是从那里来的。也许你会注意到,有时你用flashget之类的软件下载东西,必须填写“引用”,指的就是这个东西。
你可能会不得不在自己的网页里放一个别的网站的链接,而那个网站的页面都有防盗链的处理,那该怎么办呢?有没有办法构造这个“引用”信息呢?其实,只需一个简单的HTML标签就可以搞定:<base href=" http://target.com">,这里的target.com就是那个防盗链的网站。
要注意的是,使用了这个标签后,在你的页面中所有相对路径必须改成绝对路径,而原先对target.com适用的绝对路径要改成相对路径,如:<img src="img/a.jpg">改成<img src=" http://yoursite.com/page_path/img/a.jpg">,而<a href=" http://target.com/file_path/test.cgi?id=123">改成<a href="file_path/test.cgi?id=123">
GET /test.htm HTTP/1.1
Accept: */*
Referer: http://www.20cn.net/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0)
Host: localhost
Connection: Keep-Alive
其中referer头标注了我们的链接是从那里来的。也许你会注意到,有时你用flashget之类的软件下载东西,必须填写“引用”,指的就是这个东西。
你可能会不得不在自己的网页里放一个别的网站的链接,而那个网站的页面都有防盗链的处理,那该怎么办呢?有没有办法构造这个“引用”信息呢?其实,只需一个简单的HTML标签就可以搞定:<base href=" http://target.com">,这里的target.com就是那个防盗链的网站。
要注意的是,使用了这个标签后,在你的页面中所有相对路径必须改成绝对路径,而原先对target.com适用的绝对路径要改成相对路径,如:<img src="img/a.jpg">改成<img src=" http://yoursite.com/page_path/img/a.jpg">,而<a href=" http://target.com/file_path/test.cgi?id=123">改成<a href="file_path/test.cgi?id=123">