`
xutao5641745
  • 浏览: 227073 次
  • 性别: Icon_minigender_1
  • 来自: 汨罗
社区版块
存档分类
最新评论

关于request.getHeader("Referer")的问题

阅读更多
今天我来分享一下,request.getHeader("Referer")获取上次访问的URL链接,在什么情况下他会出现问题!

我在某些页面中,有某几个按钮,分别用来跳转到action.do?method=m  但是,我是用
warpLoaction("url");这个来链接过去的,结果,我在火狐浏览器中,可以正确的
获取上次访问的页面,在IE6下却获取不到。后来去网上百度了一下,看到了一哥门的评
说, request.getHeader("Referer")要走HTTP协议才有值,也就是说要通过<a href="url" />
标记,才能获取到值。当然通过表单提交的也可以。而通过location或是<a href="javascript:window.location=''" />是得不到值的,当时就马上一行动。果然是那个原因。嘿嘿。


另一个:乱码问题,如果request.getHeader("Referer")链接中带有中文参数,那么在经过跳转的时候,就会出现乱码,这个时候需要用到String keyWords = new String(str.getBytes("ISO-8859-1"),"GBK");来进行编码转换!可是如果不是通过request.getHeader("Referer")链接链过来的也用keyWords = new String(str.getBytes("ISO-8859-1"),"GBK");来进行编码转换的话,就会出现乱码,我在这里分享一下我是怎么解决的,首先,我用str.matches( "[\\u4E00-\\u9FA5]+")来判断这个字符串中是否有中文,如果没有中文,则为乱码或者数字或者英文或者其他符号,那么我们则进行编码转换,如果是中文,则不进行编码转换!
分享到:
评论
4 楼 xutao5641745 2011-01-21  
CrazzyLee 写道
xutao5641745 写道
CrazzyLee 写道
楼主的这种方法只试用于IE6;IE7,IE8貌似链接有中文用ServletActionContext.getRequest().getHeader("Referer");
依然出现乱码情况.

我用的是火狐测试的。。。其他的没有测试


解决的是在IE6,7,8 FireFox都能兼容 用跳转解决了,容器这样获得的东西太难搞了

嘿嘿。。。我也没有深入去研究。。。只是做项目的时候碰到了这个问题,然后就随随便便找了个解决方案,然后解决了。。。。。。。。
3 楼 CrazzyLee 2011-01-19  
xutao5641745 写道
CrazzyLee 写道
楼主的这种方法只试用于IE6;IE7,IE8貌似链接有中文用ServletActionContext.getRequest().getHeader("Referer");
依然出现乱码情况.

我用的是火狐测试的。。。其他的没有测试


解决的是在IE6,7,8 FireFox都能兼容 用跳转解决了,容器这样获得的东西太难搞了
2 楼 xutao5641745 2011-01-18  
CrazzyLee 写道
楼主的这种方法只试用于IE6;IE7,IE8貌似链接有中文用ServletActionContext.getRequest().getHeader("Referer");
依然出现乱码情况.

我用的是火狐测试的。。。其他的没有测试
1 楼 CrazzyLee 2011-01-10  
楼主的这种方法只试用于IE6;IE7,IE8貌似链接有中文用ServletActionContext.getRequest().getHeader("Referer");
依然出现乱码情况.

相关推荐

    关于request.getHeader(Referer)的问题探讨

    今天我来分享一下,request.getHeader(“Referer”)获取上次访问的URL链接,在什么情况下他会出现问题! 我在某些页面中,有某几个按钮,分别用来跳转到action.do?method=m 但是,我是用 warpLoaction(”url”);这...

    request.getHeader("referer")防盗链

    总的来说,"request.getHeader("referer")"在Java Web开发中是实现防盗链功能的重要工具,通过检查来源URL,服务器可以有效控制资源的访问权限,保障网站权益。但同时,开发者也需要考虑到隐私保护和安全策略的平衡...

    关于request.getHeader(&quot;Referer&quot;)的问题探讨

    `request.getHeader("Referer")` 是在Java Servlet或JSP中获取HTTP请求头中的`Referer`字段的方法,这个字段通常用于追踪用户访问来源。`Referer`字段包含的是用户先前访问页面的URL,这对于分析用户行为、防止跨站...

    JSP获取HTTP header信息(request)例子

    - `request.getHeader("Referer")`: 获取上一个页面的URL。 - `request.getHeader("Accept-Language")`: 获取客户端可接受的语言。 - `request.getHeader("Accept-Encoding")`: 获取客户端支持的编码方式。 - `...

    jsp编程中的小技巧(仅供参考)

    String referer = request.getHeader("referer"); String acceptLanguage = request.getHeader("accept-language"); String contentType = request.getHeader("content-type"); String acceptEncoding = request....

    第九讲Nginx动静分离URL转发实战.pptx

    - **`request.getHeader("Referer")`**: 获取请求头中的“Referer”字段。 通过这些信息,开发人员可以详细了解客户端与服务器之间的通信细节,这对于调试和优化Nginx配置非常有帮助。 综上所述,通过合理配置...

    图片防盗链(jsp)

    referer.startsWith("http://yourdomain.com")) { response.setStatus(403); // 设置状态码为403,禁止访问 } else { // 正常返回图片 %&gt; &lt;img src="path/to/image.jpg"&gt; } %&gt; ``` 2. Cookie验证:为合法用户...

    Filter_Listener相信代码使用

    if(null==reque.getHeader("Referer")){ request.setAttribute("message", "你进行了不合法的操作!!!"); request.getRequestDispatcher("error.jsp").forward(request, response); 里面有更详细的代码...

    httpservlet_request

    referer.startsWith("http://yourdomain.com")) { response.sendError(HttpServletResponse.SC_FORBIDDEN, "非法引用"); return; } // 请求转发 RequestDispatcher dispatcher = request.getRequestDispatcher...

    Shiro开启CSRF表单防护

    referer = referer.substring(referer.indexOf("://") + 3); } // 如 baidu.com/abc.html // ... } } } ``` 总结:Shiro 开启 CSRF 表单防护可以有效地防御 CSRF 攻击,通过验证 Referer 字段来检查请求的...

    Javascript实现返回上一页面并刷新的小例子

    RequestDispatcher dispatcher = request.getRequestDispatcher(request.getHeader("referer")); dispatcher.forward(request, response); ``` 需要注意的是,这些方法依赖于浏览器发送`HTTP_REFERER`头,但并非...

    JAVA开发中遇到的问题和异常.doc

    - `&lt;%=request.getHeader("referer") %&gt;`获取上一页(action)的完整路径。 - EL表达式`${header['Referer']}`同样获取上一页路径,但可能不是当前地址栏的路径。 - 使用`request.getRequestURI()`在Servlet中...

    jsp返回登陆前的页面的几种实现

    在登录页面可以通过`request.getHeader("Referer")`获取当前请求的来源页面URL。 ```java String lastUrl = request.getHeader("Referer"); ``` 2. **记录来源页面地址**: 可以将`lastUrl`作为隐藏参数传递...

    正则匹配URL.txt

    = null && referer.matches("http(s)?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?")) { response.setStatus(301); response.setHeader("Location", "redirect-url"); response.setHeader("Connection", "close"); } ...

    获取上一页面的URL和本页的URL的方法

    String url=request.getHeader(Referer); 2、获取本网页的URL: String url=request.getScheme()+://+ request.getServerName()+request.getRequestURI(); 您可能感兴趣的文章:jsp获取url路径的方法分析在jsp页面...

    基于HttpServletRequest 相关常用方法的应用

    `getHeader("referer")` 方法则可以获取到客户端发起请求前的页面URL,即Referer头信息,这在追踪用户来源时很有用。 2. **请求转发和重定向** - **请求转发(RequestDispatcher)**:使用 `request....

    java防盗链代码和jar

    String referer = request.getHeader("Referer"); if (referer == null) { return false; // 如果没有Referer,可能是一个直接的链接,拒绝 } try { URL url = new URL(referer); // 检查域名是否匹配,例如...

    java 70个问答

    - 可以通过`request.getHeader("referer")`来获取请求当前页面的前一个页面的URL地址。 7. **防止页面缓存:** - 为了防止浏览器缓存页面,可以使用以下代码: ```java response.setHeader("Expires", "0"); ...

    70个JAVA问答.txt

    可以通过`request.getHeader("referer")`来获取请求页面的URL,这在跟踪用户来源或进行日志记录时非常有用。 ### 7. 设置页面过期时间 要使页面在浏览器中不过期,可以使用`response.setHeader("Expires","0")`来...

    防盗链的方式借鉴.pdf

    String refer = req.getHeader("Referer"); // 获取 Referer if (refer != null && !"".equals(refer) && !refer.contains(req.getServerName())) { System.out.println("盗链来自:" + req.getRemoteAddr()); ...

Global site tag (gtag.js) - Google Analytics