JS中的OPTIONS请求

之所以写这篇博文,是因为在运行js代码时出现OPTIONS请求,就去查了相关的资料。

options请求如何发送 java js options请求_数据

在MDN中对OPTIONS请求方法是这样定义的:
用于获取目的资源所支持的通信选项。客户端可以对特定的 URL 使用 OPTIONS 方法,也可以对整站(通过将 URL 设置为“*”)使用该方法。
语法:

OPTIONS /index.html HTTP/1.1
 OPTIONS * HTTP/1.1

-------------------再去看看HTTP协议中的相关说法!!!-------------------

http协议
    一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。

HTTP请求方法
在HTTP1.1规定里8种请求方法,都必须大写的形式存在:
    (1)GET:获取资源,可以理解为读取或者下载数据;
    (2)HEAD:获取资源的元信息;
    (3)POST:向资源提交数据,相当于写入或上传数据;
    (4)PUT:类似POST;
    (5)DELETE:删除资源;
    (6)CONNECT:建立特殊的连接隧道;
    (7)OPTIONS:列出课对资源实行的方法;
    (8)TRACE:追踪请求-响应的传输路径。

安全和幂等
    安全:GET、HEAD(只读)
    不安全:POST、PUT、DELETE(修改服务器资源和增删数据)
    幂等:GET、HEAD、PUT
    非幂等:POST

请求流程:
        request和response
        他们的流程都是相同的,一个请求一个接收,流程为:状态行、消息报头、空行和响应正文。

请求响应步骤:
        客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容。

---------------------------------------其他资料-----------------------------------

OPTIONS请求 存在的情况:

1、跨域请求,非跨域请求不会出现options请求
2、自定义请求头
3、请求头中的Content-Type是application/x-www-form-urlencoded,multipart/form-data,text/plain之外的格式

----------------------第三种情况之前遇到的地方-------------------------------
表单 通过enctype属性 设定 表单数据的内容类型:

  1. application/x-www-form-urlencoded
    在发送前编码所有字符(默认)使用到的编码方式:
    1)控件的名称和值都被转义,空白字符使用【+】替换,保留的字符一般都是用来实现特定的目的,例如(: / ? ; @ = & 等)。非数字和字母的字符使用%HH(这里HH表示两个十六进制数字,代表该字符的ASCII码)进行转换,
    2)控件的"名称/值"对按照它们在文档数据流中出现的顺序列出来。“名称” “值"使 用”="分割,两个"名称/值"之间使用&隔开。
  2. multipart/form-data
    不对字符编码。在使用包含【文件上传控件】的表单时,必须使用该值。数据分成多个部分,每个部分代表一个结构良好的控件,作为文档数据流的一部分,每一个部分都按照它们在文档数据流中出现的顺序依次发送到服务器端,并且,每一部分的边界不会出现在数据中。每一部分有一个content-desposition标题头,它的值的格式是: Content-Disposition:form-data;name=“myControl”
  3. text/plain
    空格转换为 “+” 加号,但不对特殊字符编码