Javaweb————HTTP请求头属性讲解
❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️前面我们已经说过http请求分为三部分,请求行,请求头和请求体
请求头包含若干个属性:格式为属性名:属性值,这篇文章我们就来介绍一下http请求头中一些常见属性的含义
我们以淘宝网为例进行讲解
🏍️🏍️🏍️属性1:Accept
含义:浏览器支持的MIME媒体类型,比如text/html(HTML文本),application/json(json文件),image/webp(webp格式的文件),等
观察上图我们可以发现,Accept属性里支持很多格式的图片,比如svg,webp等,image/*表示支持所有格式的图片
🏍️🏍️🏍️属性2:Accept—Encoding和Accept—Language
Accept-Encoding:浏览器发给服务器,声明浏览器支持的编码类型,比如gzip,deflate等
Accept-Language:客户端接受的语言格式,比如zh-CN
如下图所示,可以看到这两个属性值
🏍️🏍️🏍️属性3:Connection:keep-alive
含义:开启HTTP持久连接
🏍️🏍️🏍️属性4:Host
含义:服务器的域名
如下图,百度服务器的域名是www.baidu.com
🏍️🏍️🏍️属性5:Origin
含义:告诉服务器请求从哪里发起,仅包括协议和域名
下图是淘宝登录页的Origin属性
如果存在跨域请求CORS,可以看到响应头中就会出现对应的Access-Control-Allow-Origin属性
🏍️🏍️🏍️属性6:Referer(非常重要)
含义:告诉服务器请求的原始资源的URL,其用于所有类型的请求,并且包括协议+域名+参数
应用场景说明:
很多电商的抢购服务会用这个作为限制,必须通过某个入口地址进来才有效,比如上图的Referer指定淘宝首页下的某个路径才有效,这样就可以防止用户通过某些特殊渠道直接进入到抢购页面不停的刷单刷屏而导致其他用户无法进入
🏍️🏍️🏍️属性7:User-Agent(非常重要)
含义:服务器通过这个请求头判断用户的软件的应用类型,操作系统,软件开发商以及版本号,浏览器内核信息等
应用场景说明:
风控系统,反作弊系统,反爬虫系统的信息参考,举个例子,我们通过自己伪造的某台设备去爬取某网站的数据,而只有通过浏览器访问的设备才有对应的设备信息,我们伪造的设备是不具有这类信息的,这样浏览器就会检测到虚假信息从而起到拦截爬虫的作用
🏍️🏍️🏍️属性8:Cookie
含义:表示服务端给客户端传的http请求状态,也是多个key=value(键值对形式组合 ),比如登录后的令牌等,后续会详细讲解
🏍️🏍️🏍️属性9:Content—Type
含义:HTTP请求提交的内容类型,一般只有post提交时才需要设置,比如文件上传,表单提交
下图表示的是UTF-8编码的纯文本格式,关于Content-type的具体属性值,后续会讲解
🏍️🏍️🏍️知识拓展1:什么是跨域请求
跨域请求(Cross-Origin Request)发生在浏览器中,当网页通过前端代码(如JavaScript)请求与当前页面不同源的资源时。源(Origin)由协议(如HTTP/HTTPS)、域名和端口号共同定义,三者任一不同即视为跨域。例如:
当前页面URL为https://a.com,请求https://b.com/data(域名不同)
当前页面URL为http://a.com,请求https://a.com/api(协议不同)
当前页面URL为http://a.com:80,请求http://a.com:8080(端口不同)
🏍️🏍️🏍️知识拓展2:跨域请求的解决方案(CORS)
跨域请求(CORS - Cross-Origin Resource Sharing)是一种W3C标准,用于解决Web应用(尤其是使用XMLHttpRequest或Fetch API发起请求的Ajax应用)因浏览器同源策略而导致的跨域数据访问限制问题。同源策略是浏览器的一项安全机制,规定了一个源(origin,由协议、域名、端口号三者组合而成)下的文档或脚本只能与同源的资源交互,禁止不同源之间的读写操作,以防止恶意网站窃取敏感数据。
在CORS机制下,服务器通过在HTTP响应头中添加特定的标志来告知浏览器允许哪些源进行跨域请求。Access-Control-Allow-Origin是核心字段,用来指定允许哪些源可以访问资源
简单请求(如GET/POST/HEAD)直接发送,非简单请求(如PUT/DELETE)需预检(OPTIONS)
如果服务器没有正确配置CORS响应头,或者拒绝了来自特定源的请求,浏览器会阻止客户端脚本获取响应内容,从而保护用户的隐私和安全。