网站内容抓取(HTTP响应头说明Allow服务器支持哪些请求方法(如GET、POST等))
优采云 发布时间: 2021-10-18 00:20网站内容抓取(HTTP响应头说明Allow服务器支持哪些请求方法(如GET、POST等))
本章我们将具体介绍HTTP响应头信息。
响应头描述
允许
服务器支持哪些请求方式(如GET、POST等)。
内容编码
文档的编码方法。解码后才能得到Content-Type头指定的内容类型。使用 gzip 压缩文档可以显着减少 HTML 文档的下载时间。 Java 的 GZIPOutputStream 可以轻松进行 gzip 压缩,但只有 Unix 上的 Netscape 和 Windows 上的 IE 4、IE 5 支持它。因此,servlet 应该通过查看 Accept-Encoding 头(即 request.getHeader("Accept-Encoding"))来检查浏览器是否支持 gzip,对于支持 gzip 的浏览器返回 gzip 压缩的 HTML 页面,对于支持 gzip 的浏览器返回普通页面其它浏览器。页面。
内容长度
表示内容的长度。仅当浏览器使用持久 HTTP 连接时才需要此数据。如果想利用长连接,可以将输出文档写入ByteArrayOutputStream,完成后检查其大小,然后将值放入Content-Length头中,最后通过byteArrayStream.writeTo(response.getOutputStream)发送内容().
内容类型
表示以下文档所属的 MIME 类型。 Servlet 默认为 text/plain,但通常需要明确指定为 text/html。由于经常设置 Content-Type,HttpServletResponse 提供了一个专门的方法 setContentType。
日期
当前格林威治标准时间。可以使用setDateHeader来设置这个header,避免转换时间格式的麻烦。
过期
我应该什么时候认为文档已经过期,不再缓存?
上次修改
上次更改文档的时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为条件GET,只有修改时间晚于指定时间的文档才会返回,否则为304(未修改)状态将被退回。也可以使用 setDateHeader 方法设置 Last-Modified。
位置
指示客户应该去哪里检索文档。 Location通常不直接设置,而是通过HttpServletResponse的sendRedirect方法,同样设置状态码为302。
刷新
表示浏览器刷新文档的时间,以秒为单位。除了刷新当前文档,还可以通过setHeader("Refresh", "5; URL=")让浏览器读取指定页面。
注意这个功能通常是通过在HTML页面的HEAD区域设置来实现的。这是因为自动刷新或重定向对于那些不能使用 CGI 或 Servlet 的 HTML 编写器是非常重要的。不过对于Servlet来说,直接设置Refresh header更方便。
注意Refresh的意思是“在N秒内刷新此页面或访问指定页面”,而不是“每N秒刷新此页面或访问指定页面”。因此,持续刷新需要每次发送一个Refresh header,发送204状态码可以防止浏览器继续刷新,无论是使用Refresh header还是。
请注意,Refresh header 不是 HTTP 1.1 官方规范的一部分,而是一个扩展,但 Netscape 和 IE 都支持它。
服务器
服务器名称。 Servlet一般不会设置这个值,而是由Web服务器自己设置。
设置Cookie
设置与页面关联的 cookie。 Servlet 不应使用 response.setHeader("Set-Cookie", ...),而应使用 HttpServletResponse 提供的特殊方法 addCookie。请参阅下面有关 cookie 设置的讨论。
WWW-认证
客户端应该在 Authorization 标头中提供什么类型的授权信息?在收录 401(未授权)状态行的响应中需要此标头。例如, response.setHeader("WWW-Authenticate", "BASIC realm=\"executives\"").
注意,Servlets一般不做这个处理,而是让web服务器的特殊机制来控制密码保护页面(如.htaccess)的访问。