目录

一、HTTP一共有八种常见请求方法

二、什么是预请求

三、为什么需要

四、什么情况下发生(以下都属于复杂请求)

五、为什么需要设置成contentType:"application/json"

六、需要配置什么

七、options作用

八、跨域方法

九、简单请求和非简单请求(复杂请求)

a.简单请求

b.非简单请求

c.浏览器如何查看options请求

十、如何在抓包工具和F12开发者工具中查看OPTION预检请求?


一、HTTP一共有八种常见请求方法

  1. get:参数在url上,浏览器长度有限制,不安全
  2. post:参数不可见,长度不受限制
  3. put:上传最新内容到指定位置
  4. delete:删除请求的url所表示的资源
  5. head:不返回相应主体,主要用于客户端查看服务器性能
  6. options:与head类似,是客户端用于查看服务器的性能 。JavaScript的XMLHttpRequest对象进行CORS跨域资源共享时,就是使用OPTIONS方法发送嗅探请求,以判断是否有对指定资源的访问权限
  7. connect:http1.1预留的,将连接方式改为管道方式,通常用于SSL加密服务器的链接与 HTTP非加密的代理服务器之间的通信
  8. trace:请求服务器[回显收到的请求信息]主要用于HTTP请求的测试或诊断
  9. patch:出现的较晚,用于更新局部的资源,不存在时,会创建一个新的(http1.1之后使用的较多的)
一般来说我们只需要用到post和get,但是如果后端是ResetFul设计规范下就需要用到各种语义化的方法了

二、什么是预请求

预请求就是复杂请求(可能对服务器数据产生副作用的HTTP请求方法,如put,delete都会对服务器数据进行修改,所以要先询问服务器)。
跨域请求中,浏览器自发的发起的预请求,浏览器会查询到两次请求,第一次的请求参数是options,以检测试实际请求是否可以被浏览器接受

三、为什么需要

w3c规范要求,对复杂请求,浏览器必须先使用options发起一个预检请求,从而获知服务器是否允许该跨域请求,服务器确认以后才能发起实际的HTTP请求,否则停止第二次正式请求。

那为什么我们不常见options请求呢??
因为大部分我们使用的是get,post请求,他们属于简单请求,而简单请求不会触发options请求。
那什么情况下会发生options请求呢???

HTTP 之 options预请求相关推荐

  1. JAVA解决OPTIONS请求问题:跨域时ajax发送两次请求,其中options预请求参数为null及其解决方案

    转载请注明出处 原文链接:https://blog.csdn.net/qq_39309348/article/details/103267908 在正式跨域的请求前,浏览器会根据需要,发起一个&quo ...

  2. get和post请求区别,options预请求

    区别 请求报文不一样:get请求请求体中没有请求数据,post请求的请求体中有请求数据. 传输方式:get参数通过url传输,post参数通过请求体传输. get相对post不安全,因为参数都是直接暴 ...

  3. http预请求options

    在有很多情况下,当我们在js里面调用一次ajax请求时,在浏览器那边却会查询到两次请求,第一次的Request Method参数是OPTIONS,还有一次就是我们真正的请求,比如get或是post请求 ...

  4. 对CORS OPTIONS预检请求的一些思考

    前后端分离模大势所趋,跨域问题更是老生常谈. <程序员应对浏览器同源策略的姿势>一文提到三种跨域请求方案,重点讲述了w3c和浏览器厂商推出的CORS规范. 同源策略  所谓同源是指域名.协 ...

  5. OPTIONS预检请求

    1.options请求是什么?什么时候浏览器会发送预检请求 options是预检请求,在真正的请求发送出去之前,浏览器都会先发送一个options请求 向服务器询问此接口是否允许我访问.浏览器在当前真 ...

  6. 从前后端的角度分析options预检请求——打破前后端联调的理解障碍

    文章目录 1.从前端的角度看options--post请求之前一定会有options请求?信口雌黄! 2.从后端的角度看options--post请求之前一定会有options请求?胡说八道! 1.从 ...

  7. H5请求服务端发送POST请求之预请求-OPTIONS

    1.问题场景 1.1 H5端请求服务端接口时,需要在header中携带服务端用jwt规范生成的token 1.2 在接收到H5的请求时Filter需要从请求头中拿出token做校验,检查当前的toke ...

  8. vue跨域拦截浏览器options预检

    当你跨域访问接口的时候,会发现你的接口请求了两次,然后仔细对比一下会发现请求类型并不一致,一个是OPTIONS,另一个是你的POST请求.事情是这样发生的,当浏览器发现你准备跨域进行非简单请求的时候( ...

  9. CORS跨域限制以及预请求验证(C++ Qt框架实现)

    目录 理论 演示及代码 理论 跨域默认情况下允许方法:GET.HEAD.POST 默认情况下允许的Content-Type:text/plain.multipart/form-data.applica ...

最新文章

  1. linux中文件记录的时间参数,【Linux】stat命令查看文件的三个时间参数
  2. python可变长参数(非关键字及关键字参数)
  3. python同时兼容2和3的几个技巧
  4. fcntl函数完成 set_fl()函数还有clr_fl()函数的封装
  5. .NET实现之(自动更新)
  6. 万物皆可“小程序”——迟到的iOS 14之猜想
  7. 关于memecache的使用及清楚示意
  8. mysql df_DF学Mysql(一)——数据库基本操作
  9. 电磁场与电磁波第四版 课后习题
  10. 3dmax2016卸载/安装失败/如何彻底卸载清除干净3dmax2016注册表和文件的方法
  11. 微博运营的5个经典案例
  12. 一键seo提交收录_百度、360快速收录新上线网站技巧、方法
  13. mib浏览器_大众汽车的第二代MIB信息娱乐系统图解
  14. hping3对某网站发起ddos攻击
  15. JavaScript中unshift() 方法
  16. linux内核的挂载,通过Linux内核使用RDT
  17. 【VUE项目实战】68、使用pm2管理项目
  18. 多项式的 加法 与 乘法(C语言 单链表)
  19. glib 交叉编译记录
  20. 常见网站劫持案例及解析

热门文章

  1. MindManager更改线条颜色
  2. 如何在vscode 中打开新文件夹不覆盖上一个窗口标签
  3. DQN算法控制模拟旋转摆(Matlab代码实现)
  4. 基于IMX214+ZYNQ 双目MIPI模块   FL0214模块 双目视觉智能平台方案
  5. 【玩转华为云】手把手教你利用ModelArts实现人脸年龄预测
  6. 《和时间做朋友》读后感
  7. 有关运行和阅读,任何伤病名单
  8. 使用腾讯位置服务制作个性化地图(视频教学)
  9. 真无线蓝牙耳机性价比排行榜,2022热门蓝牙耳机推荐
  10. 撩妹、撩汉小技术---创建自己的表情包动态图GIF《python图像处理篇》