getHeader("Referer")取不到值

getHeader("Referer")要走http协议时才有值,也就是说要通过<a   href="url">sss</a>标记才能获得那个值  
  而通过改变location或是<a   href="javascript:location='url'">sss</a>都是得不到那个值的。
有无解决办法?
另外据说Referer可以伪造,如何伪造?
以下是一个简单的Java类,它使用HttpServletRequest对象的getHeader("referer")方法实现下载资源防盗链的功能。当用户通过非法渠道请求下载资源时,该类将返回一个错误页面。 ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownloadServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 检查referer请求头 String referer = request.getHeader("referer"); if (referer == null || !referer.startsWith("http://www.mysite.com")) { // 非法渠道请求下载资源,返回错误页面 response.sendError(HttpServletResponse.SC_FORBIDDEN); return; } // 获取下载资源的内容 // ... // 输出下载资源的内容到页面上 // ... } } ``` 在上面的代码中,我们使用了HttpServletRequest对象的getHeader("referer")方法来获取referer请求头。如果referer请求头为null或者不以http://www.mysite.com开头,那么我们就认为这是一个非法渠道请求下载资源,返回一个403 Forbidden错误页面。 当referer请求头合法时,我们可以获取下载资源的内容,并将其输出到页面上。 需要注意的是,这种方式并不能完全防止资源盗链,因为referer请求头可以被修改或者删除。为了更加安全地防止资源盗链,我们可以使用其他方式,例如生成随机的下载链接或者使用加密方式传输资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值