httpheader的简单介绍
http header中的数据是否要escape
http header中的数据要escape。
MIME协议指示MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。
表示XMLHttpRequest对象的状态:0:未初始化。对象已创建,未调用open。
1:open方法成功调用,但Sendf方法未调用。
2:send方法已经调用,尚未开始接受数据。
3:正在接受数据。Http响应头信息已经接受,但尚未接收完成。
注解:
nCount Long,lpInData缓冲区的大小,用字节数表示。
lpInData String,由换码类型决定。对于QUERYESCSUPPORT,这代表指向一个整数变量的指针,那个变量包含了要测试的换码值。
对于PASSTHROUGH,这代表指向一个数据块的指针,那个数据块包含于要发送数据的头16位字节数量中。数据块剩余的部分包含了要发送给打印机的实际数据缓冲区。
lpOutData Any,指定一个输出缓冲区,它的具体使用由换码决定。它不由QUERYESCSUPPORT或PASSTHROUGH使用,而且应设为NULL(ByVal 0)。
Http的Header里面包含哪些字段,每个字段都有哪些含义?
HTTP报文中的Header可以分为请求中的Header和响应中的Header
常见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"
如果没有ACCEPT请求头?
相当于*/*
任何格式都接收
如果请求头中没有ACCEPT-ENCODING?
默认客户端支持任何方式
如果没有ACCEPT-LANGUAGE这个请求头?
服务器默认客户端支持所有自然语言。
POSTMAN测试正常,前端页面测试不正常??
POSTMAN
JMETER
CHROME
在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);——添加多个值
如何用JAVA更改请求头?
百度
ptteng.github.io/PPT/PPT-java/java-task2-header.html
关于Http请求header之Referer讲解
刚好把手机银行嵌入办事通的项目写完,该项目http请求较多,期间遇到了不少坑,也学到了不少东西,趁这个机会,简单梳理下!
图为http常见的请求方式,经常使用的,就是POST和GET,二者的区别,这里也不多做介绍。项目大致是这样的,提供接口给手机银行,获取请求参数:
request.getQueryString()方法即可取得参数相关信息,随机访问办事通提供的三个接口,最初定的接口,使用https协议,但办事通无法提供CA证书,后放弃(上一篇有提到过,无法绕过ssl验证)
随后办事通提供了另外接口,采用http协议:
采用Http发个简单Post请求,即可获取相应数据,测试环境很快调试完毕上线,上了生产,发现无论怎么都取不到数据。联系了办事通技术人员,打印了http请求头header,说请求头得有Referer,以前只是知道有这么个东西,但不知道具体有什么用,今天就简单说说。
加了这么一句话,请求OK了。那么,Referer是什么东西?
Referer是HTTP请求Header的一部分,当浏览器向Web服务器发送请求的时候,请求头信息一般需要包含Referer。该Referer会告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。
Referer作用是什么?
1)防盗链
比如办事通服务器只允许网站访问自己的静态资源,那服务器每次都需要判断Referer的值是否是zwfw.yn.gov.cn,如果是就继续访问,不是就拦截。
2)防止恶意请求
比如静态请求是 .html结尾的,动态请求是 .shtml,那么所有的*.shtml请求,必须 Referer为我自己的网站才可以访问,这就是Referer的作用。
空Referer是怎么回事?
空Referer是指Referer头部的内容为空,或者,一个HTTP 请求头中根本不包含Referer,那么什么时候HTTP请求会不包含Referer字段呢?
根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。
比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的,因为这是一个“凭空产生”的HTTP请求,并不是从一个地方链接过去的。
在防盗链设置中,允许空Referer和不允许空Referer有什么区别?
允许Referer为空,意味着你允许比如浏览器直接访问,就是空。
页面添加Referer元素需要使用meta referrer标签:
补充说明: Referer的正确英语拼法是 referrer 。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一,还有它第一个字母是大写。
HTTP请求头(Header)参数
HTTP 协议的 Header 是一块数据区域,分为请求头和响应头两种类型,客户端向服务区发送请求时带的是请求头,而服务器响应客户端数据时带的是响应头。
请求头里主要是客户端的一些基础信息,UA(user-agent)就是其中的一部分,而响应头里是响应数据的一些信息,以及服务器要求客户端如何处理这些响应数据的指令。请求头里面的关键信息如下:
响应头里的关键信息有: