HTTP请求

134 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

引出

HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口。如果使用了https协议且开启强制跳转。 现在大多数访问都使用了HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问HTTPS协议的服务器可能会被拒绝。

HTTP请求方法

HTTP/1.1协议中共定义了八种方法,来表明Request-URL指定的资源不同的操作方式。
HTTP1.0定义了三种请求方法:GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

方法描述
GET请求指定的页面信息,并返回实体主体。
HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或诊断。
PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新。

HTTP响应状态码

向服务器发送一个请求后,服务器会给客户端一个响应,并通过相应状态码来标识响应状态。

状态码名称描述
200OK当您的操作将在响应正文中返回数据时,出现此结果。
204No Content当您的操作成功,但不在响应正文中返回数据时,出现此结果。
304Not Modified(重定向)当测试实体自上次检索以来是否被修改时,出现此结果。
403Forbidden客户端错误
401Unauthorized客户端错误
413Payload Too Large(客户端错误)当请求长度过长时,出现此结果。
400BadRequest(客户端错误)当参数无效时,出现此结果。
404Not Found(客户端错误)当资源不存在时,出现此结果。
405Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。
412Precondition Failed客户端错误
501Not Implemented(服务器错误)当未实施某个请求的操作时,出现此结果。
503Service Unavailable(服务器错误)当 Web API 服务不可用时,出现此结果。

httpbin工具

httpbin是什么?

httpbin是一个用Flask框架编写的开源项目。
该网站能测试HTTP请求和响应的各种信息,比如cookie、ip、headers和登录验证等,且支持GET、POST等多种方法,对web开发和测试很有帮助。
官方网站:httpbin.org/
开源地址:github.com/Runscope/ht…

httpbin官网

可用API

kttpbin中的支持的API涉及HTTP请求方法、请求权限、响应状态码、Cookie等多种API,可用范围如下图所示。

httpbin可用API

以GET方法为例,对httpbin.org/get地址进行请求,可以得到如下响应数据:

{
  "args": {

  },
  "headers": {
    "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.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
    "Host": "httpbin.org",
    "Sec-Ch-Ua": "" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"",
    "Sec-Ch-Ua-Mobile": "?0",
    "Sec-Ch-Ua-Platform": ""Linux"",
    "Sec-Fetch-Dest": "document",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "none",
    "Sec-Fetch-User": "?1",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36",
    "X-Amzn-Trace-Id": "Root=1-626b6aad-3254844a2ffa93953eb0bbe9"
  },
  "origin": "35.78.203.43",
  "url": "https://httpbin.org/get"
}

注意:在HTTP Methods的API中,除了GET请求可以通过浏览器直接访问外,其余请求均需要通过测试软件进行测试。