HTTP请求方式及常见问题

请求方式

当前HTTP一共有八种方式。有三种是有HTTP1.0提供,剩余五种则是有HTTP1.1提供

常见问题

啥是OPTIONS?有啥作用

是浏览器对复杂跨域请求的一种处理方式,在真正发送请求之前,会先进行一次预请求,就是我们刚刚说到的参数为OPTIONS的第一次请求,他的作用是用于试探服务端是否能接受真正的请求。如果options获得的回应时拒绝性质的,如404、403、500等状态,就会停止post、get请求的发出。

产生条件:

  1. 请求的方法不是GET/HEAD/POST
  2. POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
  3. 请求设置了自定义的header字段

 

简单请求和复杂请求是什么?

简单请求就是会直接发送请求,而复杂请求则会在发送真正的请求之前发一次OPTIONS预检请求,来试探服务器是否能够接收真正的请求,MDN对OPTIONS预检请求的释义为检测服务器所支持的请求方法。

简单请求符合如下两个条件

  • 请求方式:GET、POST、HEAD,即HTTP1.0提供的三种请求方法
  • HTTP头部信息不超过一下几种字段:无自定义头部字段、Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type(只有三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)

复杂请求则符合如下几个条件之一

  • 请求方式:PUT、DELETE
  • 自定义头部字段
  • 发送json格式数据

 

说一说GET和POST的联系和区别

联系:GET/POST都是TCP连接

区别:

重要区别:长方用包安,退缓历史类码(厂房用保安,退还历史累吗)

区别

GET

POST

传输长度

长度限制(受限于url长度),一般2KB

post无限制

传输方式

地址栏传输

报文传输

用途

查询

增删改数据

数据包数量

一个TCP数据包

两个TCP数据包

安全性

不安全

相对安全

回退

在浏览器回退时是无害的

POST会再次提交请求

缓存

会被浏览器主动缓存

不会被主动缓存

历史记录

会被完整保留在浏览器历史记录里

不会保留

参数类型

只接受ASCII字符

无限制

编码

只能URL编码

POST支持多种编码方式

注意⚠️:并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

 

参考:

https://www.jianshu.com/p/d0e76ba01c1c

https://www.cnblogs.com/weibanggang/p/9454581.html

https://zhidao.baidu.com/question/567658249.html

https://blog.csdn.net/kahhy/article/details/81563063

MDN: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/OPTIONS

原文地址:https://www.cnblogs.com/suihang/p/13348028.html