Http协议相关 Http Header等

 

我在服务器配置了个 /etc/hosts 域名映射,如下 192.168.1.10 a.test.com
有个问题,在客户端,请求http://a.test.com/query接口,和http://192.168.1.10/query接口。这2个请求有什么区别?对于接口的服务端,能感知到客户端使用哪种请求的吗?

在你描述的情况下,配置了 /etc/hosts 文件来映射域名 a.test.com 到 IP 地址 192.168.1.10。这样做的目的是让你可以使用域名访问服务器,而不必直接使用 IP 地址。对于你的问题:

区别:
当你使用 http://a.test.com/query 发起请求时,实际上是发送到了 192.168.1.10 这台服务器,只是通过域名映射让你可以使用友好的域名来访问。
当你使用 http://192.168.1.10/query 发起请求时,直接使用了服务器的 IP 地址。

服务端感知:
从服务端的角度来看,两种请求(域名请求和直接IP请求)在大多数情况下是没有区别的。HTTP 请求中会包含一个 Host 头部字段,该字段指示了客户端请求的目标域名。服务端可以通过检查这个头部字段来知道客户端访问的是哪个域名。
在绝大多数情况下,服务端不会感知到客户端使用了哪种请求方式,因为 HTTP 请求本身不会明确地包含“使用域名”或“使用IP地址”的信息。服务端只是解析请求中的数据,提供相应的响应。

例子

本地启动了一个服务端,监听8000端口

当使用http://127.0.0.1:8000/请求,服务端获取到如下

Request URL: /
Request Headers:
Host: 127.0.0.1:8000
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

当使用http://a.test.com:8000/请求,服务端获取到如下

Request URL: /
Request Headers:
Host: a.test.com:8000
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9

 

posted @ 2023-08-29 15:47  szcj~  阅读(10)  评论(0)    收藏  举报