- 浏览: 56943 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
禁止浏览器缓存当前文档内容
只要增加如下的响应头字段:
response.setDateHeader("Expires",0);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
不是所有的浏览器都能完全支持上面的三个响应头,因此最好是同时使用上面三个响应头,只有浏览器能支持其中任何一种,就能可靠地禁止浏览器缓存当前页面。
还可以在HTML文档中利用<meta>标签的http-equiv属性来达到这一效果。
<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
实现动态文件内容下载
1.Servlet程序必须告诉浏览器其说输出的内容的类型不是普通的文本文件或HTML文件,而是一个要保存到本地的下载文件,这就需要通过HttpServletResponse.setContentType方法设置Content-Type头字段的值为浏览器无法使用某种方式或激活某个程序来处理的MIME类型,例如:“application/octet-stream”或"application/x-msdownload"等。
2.需要通过HttpServletResponse.setHeader方法设置Content-Disposition头的值为"attachment;filename=文件名"。
3.因为附件文件可以是各种类型的文件,要讲附件文件中的内容传送给客户端,其中的内容应被当做二进制处理,所以应该调用HttpServletResponse.getOutputStream方法返回的ServletOutputStream对象来向客户端写入附件文件内容,而不应使用Http
ServletResponse.getWriter方法返回的PrintWriter对象。
利用Referer请求头阻止“盗链”
防止盗链,需要检查请求的来路,只接受本站内的页面链接进来的下载请求,而阻止其他站点的页面链接进来的下载请求。要实现这样的功能,就需要检查请求消息的referer头字段是否与本站匹配。
代码片段:
String referrer = request.getHeader("referer");
String sitePart = "http://" + request.getServerName();
if(referrer!=null && referrer.startsWith(sitePart))
{
//处理下载请求...
}
else
{
//非法下载请求跳转到本站的下载说明页
RequestDispatcher rd = request.getRequestDispatcher("/down.html");
rd.forward(request,response);
}
利用Referer请求头隐藏JavaScript源代码
利用JavaScript可以实现许多网页特效功能,但是,访问者可以轻松查看到所有的JavaScript源代码,即使是把代码放在js文件中也无法保密。如果让js文件通过一个服务器端程序动态创建,结合使用Referer请求头字段就可以防止他人查看到JavaScript源码。
大致原理和上面的防盗链类似
在servlet中加入下面的代码块:
String referrer = request.getHeader("referer");
String sitePart = "http://" + request.getServerName();
response.setContentType("text/javascript;charset=utf-8");
PrintWriter out = response.getWriter();
if(referrer!=null && referrer.startsWith(sitePart))
{
out.println(
//向客户端输出JavaScript的代码块
);
}
在显示页面中要加入JavaScript代码的时候这样设置:
<script type="text/javascript" src="servlet的访问路径">
</script>
有些浏览器在有缓存网页的情况下,还是可以看到JavaScript源码的,只要在servlet代码里加上防止缓存的代码即可。
只要增加如下的响应头字段:
response.setDateHeader("Expires",0);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
不是所有的浏览器都能完全支持上面的三个响应头,因此最好是同时使用上面三个响应头,只有浏览器能支持其中任何一种,就能可靠地禁止浏览器缓存当前页面。
还可以在HTML文档中利用<meta>标签的http-equiv属性来达到这一效果。
<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
实现动态文件内容下载
1.Servlet程序必须告诉浏览器其说输出的内容的类型不是普通的文本文件或HTML文件,而是一个要保存到本地的下载文件,这就需要通过HttpServletResponse.setContentType方法设置Content-Type头字段的值为浏览器无法使用某种方式或激活某个程序来处理的MIME类型,例如:“application/octet-stream”或"application/x-msdownload"等。
2.需要通过HttpServletResponse.setHeader方法设置Content-Disposition头的值为"attachment;filename=文件名"。
3.因为附件文件可以是各种类型的文件,要讲附件文件中的内容传送给客户端,其中的内容应被当做二进制处理,所以应该调用HttpServletResponse.getOutputStream方法返回的ServletOutputStream对象来向客户端写入附件文件内容,而不应使用Http
ServletResponse.getWriter方法返回的PrintWriter对象。
利用Referer请求头阻止“盗链”
防止盗链,需要检查请求的来路,只接受本站内的页面链接进来的下载请求,而阻止其他站点的页面链接进来的下载请求。要实现这样的功能,就需要检查请求消息的referer头字段是否与本站匹配。
代码片段:
String referrer = request.getHeader("referer");
String sitePart = "http://" + request.getServerName();
if(referrer!=null && referrer.startsWith(sitePart))
{
//处理下载请求...
}
else
{
//非法下载请求跳转到本站的下载说明页
RequestDispatcher rd = request.getRequestDispatcher("/down.html");
rd.forward(request,response);
}
利用Referer请求头隐藏JavaScript源代码
利用JavaScript可以实现许多网页特效功能,但是,访问者可以轻松查看到所有的JavaScript源代码,即使是把代码放在js文件中也无法保密。如果让js文件通过一个服务器端程序动态创建,结合使用Referer请求头字段就可以防止他人查看到JavaScript源码。
大致原理和上面的防盗链类似
在servlet中加入下面的代码块:
String referrer = request.getHeader("referer");
String sitePart = "http://" + request.getServerName();
response.setContentType("text/javascript;charset=utf-8");
PrintWriter out = response.getWriter();
if(referrer!=null && referrer.startsWith(sitePart))
{
out.println(
//向客户端输出JavaScript的代码块
);
}
在显示页面中要加入JavaScript代码的时候这样设置:
<script type="text/javascript" src="servlet的访问路径">
</script>
有些浏览器在有缓存网页的情况下,还是可以看到JavaScript源码的,只要在servlet代码里加上防止缓存的代码即可。
发表评论
-
高精度
2011-08-31 20:40 1000之前提到过在商业运算中要使用BigDecimal来进行相关的钱 ... -
java中如何进行高精度运算
2011-08-31 20:32 795import java.math.BigDecimal; im ... -
win7下安装vs2008
2011-01-09 23:28 848在win7下安装VS2008有点不太让人愉快,不过白痴还是找到 ... -
正则表达式
2010-12-11 12:39 582整理资料如下: \\ 反斜杠 \t 间隔 ('\u0009' ... -
应该懂的基础问题
2010-12-11 12:14 696问题一:我声明了什么! String s = &quo ... -
Java中的堆栈
2010-12-11 10:59 652Java把内存划分成两种:一种是栈内存,一种是堆内存。 ... -
Java IO 小结
2010-12-11 10:51 602什么是数据流 ----------数据流是指所有的数据通信通道 ... -
字符转换
2010-11-30 20:43 638问:怎样将GBK 编码的汉字转换成为 UTF-8 编码的汉 ... -
进制转换
2010-11-30 20:42 795计算机操作里面时常要牵涉到二进制、十进制、十六进制等。特别是在 ... -
多叉树解决复杂表头问题
2010-11-30 20:21 785现代化WEB项目中少不了要用到报表展现.对于中国式报表来说,复 ... -
关于java编码的转换
2010-11-30 20:17 576问:怎样将GBK 编码的汉字转换成为 UTF-8 编码的汉 ... -
编译器报:未调用原型函数(是有意用变量定义的吗?)(本文为原创,转载清注明出外)
2010-11-30 20:08 1818MSDN解释:编译器检测到未使用的函数原型。如果有意将该原型作 ... -
C++类型转换运算符重载
2010-11-30 20:06 850在C++中有一个特殊的运算符重载方法--类型转换运算符重载,形 ... -
ATL分解字符串
2010-11-30 20:05 754一个简单的分解字符串的方法: Code vector< ... -
java字符集(三)之java.io
2010-11-30 20:04 927java IO 的输出分两种,字节流: InputStream ... -
java字符集(二)
2010-11-30 20:03 666知道java的字符集编码,那么java是怎么读取内存中的字节转 ... -
编码字符集与字符集编码的区别(转)
2010-11-30 20:03 653需要再一次强调的是,无论历史上的UCS还是现如今的Unicod ... -
Unicode与UCS的历史恩怨(转载)
2010-11-30 19:59 551ASCII及相关标准 ... -
Java字符集(一)
2010-11-30 19:57 660UNICODE,GBK和BIG5就是编码的值,而utf-8,u ...
相关推荐
响应头则有Server(标识服务器软件)、Content-Type(指示响应体的数据类型)、Set-Cookie(设置客户端的cookie)等字段。例如,Cache-Control和Pragma头用于控制缓存策略,Location头在3xx重定向时指示新的URL,而...
3. 响应头:响应头字段包括`Content-Type`(指示响应体的MIME类型)、`Server`(服务器软件信息)、`Location`(重定向时提供新URL)等。特别地,`Cache-Control`和`Expires`字段可以控制缓存策略,减少不必要的网络...
JavaWeb开发技术-HTTP响应消息HTTP响应头 JavaWeb开发技术中,HTTP响应消息头是服务器向客户端发送的响应消息的重要组成部分。HTTP响应消息头是指在响应状态行之后的多行文本,它们是由头字段名称和值构成的,每个...
### HTTP协议头字段及分析 #### 一、概述 HTTP(HyperText Transfer Protocol)作为互联网上应用最为广泛的一种网络协议,主要用于规定客户端与服务器之间如何通信。它是一种基于请求与响应模型的应用层协议,用于...
在深入探讨HTTP协议中的请求头和响应头之前,我们首先简要回顾一下HTTP协议的基本概念。HTTP(Hypertext Transfer Protocol)是用于从万维网服务器传输超文本到本地浏览器的传输协议,它允许数据在客户端和服务器...
6. **考虑多语言环境**:如果应用支持多语言,还需要考虑不同语言的字符宽度差异,以避免字段显示不全。 7. **使用脚本事件**:可以利用数据窗口的`ItemStateChange`事件来实时检测字段内容变化,并相应调整宽度。 ...
HTTP 请求和响应头字段详解 HTTP 请求头字段是指在 HTTP 请求中,客户端发送给服务器的头信息,用于告诉服务器客户端的需求和限制。下面是常见的 HTTP 请求头字段: 1. Accept: 指定客户端能够接收的内容类型,...
在深入理解DBF文件头及字段模板之前,我们先来了解一下DBF文件的基本结构。 **DBF文件头** DBF文件头包含了文件的基本信息,包括文件创建日期、记录数量、字段个数、每条记录的大小等。具体来说,文件头通常包含...
请求头主要用于指示客户端的偏好和能力,而响应头则包含了服务器对请求的响应信息。以下是一些常见的请求头和响应头及其详细解释: 1. Accept:这个头字段用于指定客户端能够接收的内容类型,例如文本、HTML、JSON...
除了基本的`getHeaderFields()`方法,还可以使用`getHeaderField(String name)`来获取特定的响应头字段。例如,如果我们只关心"Content-Type"头,可以这样写: ```java String contentType = connection....
修改pcap包,如果包含http响应头,修改其中的date字段,重新生成新的pcap。 python环境3.9.9,scapy版本:2.5.0
### JavaScript源代码:Ajax解决跨域之设置CORS响应头实现跨域案例详解 #### 跨源资源共享(CORS)概述 跨源资源共享(Cross-Origin Resource Sharing,简称CORS)是一种安全机制,允许Web应用程序从不同的域名...
- **针对单播密钥协商确认分组的WAI类型的协议完整性测试**:评估设备对于异常类型字段值的响应。 - **针对组播密钥通告分组的WAI分组序号的协议完整性测试**:通过发送具有异常分组序号的组播密钥通告分组,来测试...
在数据库管理中,设置表的字段属性是一项至关重要的任务,它直接影响着数据的存储、管理和使用效率。本PPT学习教案主要围绕会计学中的数据库管理,详细讲解了如何设置表的字段属性,包括知识目标、技能目标和情感...
分隔响应头和响应正文的必须空行。 4. 响应正文: 服务器返回给客户端的实际内容,可以是HTML、JSON、图片或其他类型的数据。 三、HTTP方法的区别 1. GET与POST的主要区别: - GET是幂等的,意味着多次执行...
Oracle自增字段的实际应用,对比各种数据库自增字段的应用!
当响应数据是字符串格式时,可以使用正则表达式来匹配并提取目标字段值。首先导入`requests`和`re`库。假设我们需要从XML响应中获取`值>`标签内的内容,可以编写如下代码: ```python import requests import re...
本文将深入解析`Cache-Control`字段的含义、作用及其各种指令,帮助你更好地理解和应用这个关键的HTTP头信息。 一、`Cache-Control`简介 `Cache-Control`头字段是在HTTP/1.1中引入的,用于替代或扩展早期HTTP版本中...
在Node.js中设置HTTP头主要使用res.setHeader()方法,这个方法允许我们为响应头添加字段,最常见的设置包括Content-Type、Content-Length、Set-Cookie等。Content-Type通常用于指示响应的内容类型,比如"text/html"...
【Oracle 12c不可见字段的应用】 Oracle 12c是Oracle数据库的一个重要版本,引入了许多创新特性,其中就包括“不可见字段”的概念。不可见字段是一种数据隐藏技术,它允许数据库管理员在表中定义某些列,但这些列在...