最近做一个海外的项目遇到了一些小问题问题,刚开始正在线下拉不了数据 get请求和post请求都坏掉了,前端一直显示跨域问题,和后端的工作人员一起解决了好久,get请求可以了,但是post请求还是跨域问题。。。最终只能线上测试了。在这个工作过程中遇到了一些关于http请求头和响应头的问题,所以有时间就来系统的学习一下
对于response headers的作用个人理解是用于在http请求中服务器向浏览器传递附加信息,主要包括服务器传递的数据类型,使用的压缩方法,语言,以及服务器的信息和响应该请求的时间等.
以下为response 属性
属性名称 | 意义 | 示例 |
Accept-Ranges | Web服务器表示自己是否接受获取某个实体的一部分(比如文件的一部分)的请求 bytes:接受 none:不接受 | Accept-Ranges:bytes |
Access-Control-Allow-Origin | 指定哪些网站可以跨域源资源共享 | Access-Control-Allow-Origin:* |
age | 响应对象在代理缓存中存在的时间,以秒为单位 | Age:234585576 |
Access-Control-Allow-Methods | 允许的http请求方法 | Access-Control-Allow-Methods: POST, GET, OPTIONS |
Allow | Allow支持标题列出资源集合的方法。 | Allow: GET, POST, HEAD |
Connection | 告诉WEB服务器或者代理服务器,在完成本次请求的响应 后,该做什么 close:断开连接,不要等待本次连接的后续请求了 keep-alive:保持连接,等待本次连接的后续请求 | Connection: keep-alive |
Cache-Control | 通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒 no-cache:可以在本地进行缓存,但是每次发起请求都需要到服务器去验证一下,如果服务器返回告诉你可以使用本地缓存,你才可以去使用本地的缓存 no-store:本地不可进行缓存的,每次发起请求,都需要去服务端去拿去数ju public:在HTTP请求返回的内容经过的所有路径中,都可以对返回内容进行一个缓存的操作。 private:只有发起请求的浏览器才可以进行缓存 max-age=<seconds>:缓存多少秒之后才会过期。 s-maxage=<seconds>:它会替代max-age,但是只有在 代理服务器中才会起作用。 max-stale=<seonds>:当我们缓存过期以后,如果有max-stale,只要在max-stale这个时间之内,还会使用过期的缓存。只有在发起端设置才有用,在服务端设置没有用。 must-revalidate:如果我们的和缓存过期了,我们必须重新发送到源服务端,重新获取这部分数据,来验证这部分数据是否真的过期了 proxy-revalidate:用在缓存服务器中,缓存过期后,必须要去源服务器上重新请求一次,而不能使用本地的缓存 | Cache-Control:no-cache |
Content-Type | 服务器告诉浏览器它发送的数据属于什么文件类型,也就是响应数据的MIME类型 type:主类型,任意的字符串,如text,如果是*号代表所有; subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开; parameter:可选参数,如charset,boundary等。 | Content-Type: application/json;charset=utf-8 |
content-length | 响应数据的数据长度,单位是byte | content-length: 0 |
Content-Encoding | 服务器采用哪种编码格式传输正文 其值有:gzip;x-gzip;compress等 | Content-Encoding:gzip |
Date | 响应消息发送的GMT格式日期 | date: Mon, 06 May 2019 22:48:29 GMT |
ETag | 就是一个对象(比如URL)的标志值 主要供 WEB 服务器 判断一个对象是否改变了 | |
Expired | 告诉客户端该响应数据会在指定的时间过期,通常用于给客户端缓存作为参考。 | expires: Thu, 28 Jun 2018 11:27:53 GMT |
via | 告诉客户端,该回应经历了那些代理。 | Via: 1.0 example1.com, 1.1 example2.com (Apache/1.1) |
status | 返回的状态码 | Status:200 |
Server | 服务器名称 |
对于request headers可以理解为用于在请求消息中向服务器传递附加信息,主要包括客户机可以接受的数据类型,压缩方法,语言,以及客户计算机上保留的信息和发出该请求的超链接源地址等.
request headers属性
Accept | 指定客户端能够接收的内容类型 | Accept: */* |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型 | Accept-Encoding: gzip, deflate, br |
Accept-Language | 浏览器所希望的语言种类 | |
Cache-Control | 缓存机制 | Cache-Control: max-age=0 |
Connection | 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) | Connection: keep-alive |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 | |
Host | 指定请求的服务器的域名和端口号 | Host: www.baidu.com |
Referer | 包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 | |
From | 请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 |
这里是response headers和request headers中所能触及到的大部分内容,其中在response headers中Access-Control-Allow-Origin可以解决一些跨域问题,Allow和请求方法有关,cache-control和缓存有关等等,知道这些应该对之后的接口连接有一些帮助,希望能帮助到大家~
参考文件:
https://www.cnblogs.com/good7758/articles/5635981.html
https://blog.csdn.net/qq_14869093/article/details/86307084
https://blog.csdn.net/qq_14869093/article/details/86307084#responseContentType_63
https://blog.csdn.net/weixin_43453386/article/details/83792682#3_53
https://www.cnblogs.com/jiangxiaobo/p/5499488.html
https://www.cnblogs.com/honghong87/articles/6941436.html