大家好,我是IT修真院学员,一枚正直善良的Java程序员。
今天给大家分享一下,修真院官网 Java任务中可能会使用到的知识点:
Http的Header
1.背景介绍
HTTP报文中的Header可以分为请求中的Header和响应中的Header
2.知识剖析
常见Header详解:
Header中”q”值的含义:优先级。
没有q值的优先级默认为1。
q值一样的,范围小的优先级高。
格式:分号。
Accept:
客户端可以接受的Body格式
application/json ——JSON格式
text/plain——纯文本格式
text/html——HTML文本
*/*——所有格式
逗号隔开,有顺序。
分号前是主类型,分号后是子类型。
如果没有Accept请求头,相当于*/*
Accept-Encoding :
Content-Encoding:
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。
服务器会通过Accept-Encoding得到客户端支持的压缩方式,如果服务器和浏览器同时支持某种压缩方式,服务器就会添加一种Content-Encoding,来进行压缩。
如果服务器不支持客户端Accept-Encoding中的任何一个压缩方式,则会返回406错误。
如果请求头中没有Accept-Encoding这个头,则会默认客户端支持任何方式。
Accept-Language:
浏览器可接受的自然语言的类型。
如果没有Accept-Language这个请求头,服务器默认客户端支持所有自然语言。
例如:zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
User-Agent:
主要用于统计和追踪信息,用处不大。可以包含很多信息。
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
Content-Type:
表示请求或响应体的格式。
Connection:
设置HTTP连接的持久化,通常都是Keep-Alive。
Connection: close 表示在响应结束后,结束连接。
WWW-Authenticate:
WWW-Authenticate响应头必须包含在401授权错误中,表示通过什么方式进行身份验证。
例如:WWW-Authenticate: BASIC realm="application"
3.常见问题
如果没有ACCEPT请求头?
相当于*/*
任何格式都接收
如果请求头中没有ACCEPT-ENCODING?
默认客户端支持任何方式
如果没有ACCEPT-LANGUAGE这个请求头?
服务器默认客户端支持所有自然语言。
POSTMAN测试正常,前端页面测试不正常??
4.解决方法
POSTMAN
JMETER
CHROME
5.编码实战
在JAVA中取得请求头?
取得HttpServletRequest对象
public String getHeader(String name);
public Enumeration getHeaders(String name);
public Enumeration getHeaderNames();
在JAVA中添加响应头?
取得HttpServletResponse对象
public void setHeader(String name, String value);——会覆盖
public void addHeader(String name, String value);——添加多个值
6.扩展思考
如何用JAVA更改请求头?
7.参考文献
百度
8.更多讨论
ptteng.github.io/PPT/PPT-java/java-task2-header.html