Request Headers请求头和Response Headers响应头,有啥区别呢?
前言:这次,发布预上线内容的时候,切换了预上线的Request URL的地址,但是预上线的链接地址没有切换,导致接口请求failed,导致跨域,通过比对其他项目预上线的内容,发现是请求头里的origin(用来标识出最初请求时从哪里发起的)地址不一样,原因是请求链接的地址没有切换导致的。具体场景图片如下所示:
接口在请求的时候,都failed的了。
经过比对,发现请求的Host地址,和origin请求地址(即游览器请求的地址)不一样导致的。
因为请求的地址,与访问的链接地址不一样,还导致了跨域问题。
当把链接请求的地址改为和Request URL中一样的时候,接口就请求正常了。
在游览器访问网页的时候,会涉及到请求头和响应头,那么,下面我们了解下两者的区别和不同。
一、Request Headers请求头
1.Accept:告诉服务器,客户机支持的数据类型;
2.Accept-Encoding:告诉服务器,客户机支持的数据压缩格式;
3.Cache-Control:缓存控制,服务器通过游览器要不要缓存数据;
4.Connection:处理完这次请求,是断开连接还是保持连接;
5.Cookie:客户机通过这个可以向服务器带数据;
6.Host:访问的主机名;
7.origin:用来标识出最初请求时从哪里发起的;
8.Upgrade-Insecure-Requests:参考http://www.cnblogs.com/hustskyking/p/upgrade-insecure-requests.html
9.User-Agent:告诉服务器,客户机的软件环境。
补充说明(Origin字段):
为了防止CSRF的攻击,我们建议修改游览器在发送POST请求的时候,加上一个origin字段,这个origin字段主要时用来标识出最初请求是从哪里发起的。如果游览器不能确定元在哪里,那么在发送的请求里面origin字段的值就为空。
隐私方面:这种origin字段的方式比Referer更人性化,因为它尊重了用户的隐私。
(a)origin字段里只包含是谁发起的请求,并没有其他信息(通常情况下是方案,主机和活动文档URL的端口)。跟Referer不一样的是,Origin字段并没有包含涉及到用户隐私的URL路径和请求内容,这个尤其重要;
(b)Origin字段只存在于POST请求,而Referer则存在于所有类型的请求;
随便点击一个超链接,并不会发送origin字段,这样可以防止敏感信息的以外泄露。
在应对隐私问题方面,origin字段的方法可能更能迎合用户的口味。
服务端要做的:用origin字段的方法来防御CSRF攻击的时候,网站需要做到以下几点:
a.在所有能改变状态的请求里,包括登陆请求,都必须使用POST方法。对于一些特定的能改变状态的GET请求必须要拒绝,这个为了对抗上文中提到过的论坛张贴的那种危害类型;
b.对于那些有origin字段但是值并不是我们希望的(包括值为空)请求,服务器要一律拒绝。比如,服务器可以拒绝一切origin字段为外站的请求。
安全性分析:虽然origin字段的设计非常简单,但是用它来防御CSRF攻击可以起到很好的作用。
a.去掉origin字段。由于支持这种方法的游览器在每次POST请求的时候都会带上源header,那么网站就可以通过查看是否存在这种origin字段来确定请求是否是由支持这种方法的游览器发起的,这种设计能有效防止攻击者将一个支持这种方法的游览器改变成不支持这种方法的游览器,因为即使你改变游览器去掉了origin字段,origin字段还是存在,只不过值变为空了。这跟Referer很不一样,因为Referer只要是在请求里去掉了,那服务器就探测不到了;
b.DNS重新绑定。在现有的游览器里面,对于同站的XMLHttpRequests,Origin字段可以被伪造。只依赖网络连接进行身份验证的网站应当使用DNS重新绑定的方法,比如验证header里的Host字段。在使用Origin字段来防御CSRF攻击的时候,也需要用到DNS重新绑定的方法,他们是相辅相成的。
二、Response Headers响应头
1.Connection:处理完这次请求后,是断开连接还是继续保持连接;
2.Content-Encoding:服务器通过这个头,告诉游览器数据的压缩格式;
3.Content-Length:服务器通过这个头,告诉游览器回送数据的长度;
4.Content-Type:服务器通过这个头,告诉游览器回送数据的类型;
5.Date:当前时间值;
6.Server:服务器通过这个头,告诉游览器服务器的类型;
7.Vary:Accept-Encoding----明确告知缓存服务器Accept-Encoding字段的内容,分别缓存不同的版本,参考:https://imququ.com/post/vary-header-in-http.html
8.X-Powered-By:服务器告知客户机网站是用何种语言或框架编写的。
参考博客:Request Headers请求头和Response Headers响应头 https://www.jianshu.com/p/15e1e9aa84c3
Origin字段 http://blog.sina.com.cn/s/blog_625f850801015tik.html
Request Headers请求头和Response Headers响应头,有啥区别呢?相关推荐
- response的响应头,下载文件
response的响应头,下载文件 前端代码 <%@ page contentType="text/html;charset=UTF-8" language="ja ...
- response设置响应头
通过response设置响应行 设置响应行的状态码 setStatus(int sc) package com.learn.line;import java.io.IOException; impor ...
- 网页Request Headers请求头和Response Headers响应头
Request Headers Accept:告诉服务器,客户机支持的数据类型 Accept-Encoding:告诉服务器,客户机支持的数据压缩格式 Cache-Control:缓存控制,服务器通过控 ...
- Request Headers请求头和Response Headers响应头
Request Headers Accept:告诉服务器,客户机支持的数据类型 Accept-Encoding:告诉服务器,客户机支持的数据压缩格式 Cache-Control:缓存控制,服务器通过控 ...
- vue页面返回消息头获取_vue在响应头response中获取自定义headers操作
日常开发,我们可能会为了安全问题,保证第三方无法通过伪造返回报文欺骗前端,需要在返回报文中添加自定义参数,用于验证身份,后端添加自定义参数,前端校验自定义参数通过后才会执行相应的操作. 系统为了安全会 ...
- php 接口响应头处理,PHP--获取响应头(Response Header)方法
方法一: ========================================== $baiduUrl = "http://www.baidu.com/link?url=LZE_ ...
- Request Headers 和Response Headers——请求头和响应头
前沿 作为一个前端开发工程师看不懂每条请求的请求头和响应头,实在是一件很难受的事情.最近花了一些时间整理了一篇文档,一起来看看前后端交互时每个资源的信息. 谷歌浏览器调试工具--查看请求资源的信息数据 ...
- 请求头(request headers)和响应头(response headers)解析
原文地址:https://www.cnblogs.com/fighter007/p/8445435.html HTTP 中文开发手册:http://www.php.cn/manual/view/355 ...
- Python 爬虫 Request(请求头)和Response(响应头)的 内容详解 【爬虫资料二】
Resquest请求头[以访问知乎]为例(使用Fiddler抓的包) 请求行包含的信息: 请求的方法(POST) #其他的方法还有GET.HEAD.PUT.DELETE.OPTIONS.TRACE ...
- Android系列之网络(二)----HTTP请求头与响应头
一.HTTP头引入: 正确的设置HTTP头部信息有助于搜索引擎判断网页及提升网站访问速度.通常HTTP消息包括:客户机向服务器的请求消息和服务器向客户机的响应消息.客户端向服务器发送一个请求,请求头包 ...
最新文章
- 给博客园加一个会动的小人-spig.js
- Attribute class invalid for tag present according to TLD
- wpa_supplicant 详解(9) - 4 way handshake
- Matlab字符串的基本操作
- OpenCV使用FindContours进行二维码定位
- 2021中国华录杯·算法大赛活动进行中,超多奖励等你来拿
- 四十二、ETL工具Kettle的转换步骤
- 窗口之间值、控件的传递
- 【ElasticSearch】Es 源码之 快照 RepositoriesModule RepositoriesService 源码解读
- 阿里技术面:ReadWriteLock读写之间互斥吗?
- 在Python中模拟do-while循环?
- IIS6切换PHP版本
- mycat err:java.sql.SQLNonTransientException: find no Route:select日志报错
- Diffusion model—扩散模型
- matlab 同态滤波
- C/C++项目源码——数字雨DigitalRain
- 小学英语与计算机技术整合,信息技术与小学英语课程整合初探
- LSB算法分析与实现
- SQL注入之Mssql注入及原理
- 蚂蚁移动开发平台mPaaS:金融业务增长的新引擎