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

查阅相关的资料之后发现,这是浏览器对复杂跨域请求的一种处理方式,在真正发送请求之前,会先进行一次预请求,就是我们刚刚说到的参数为OPTIONS的第一次请求,他的作用是用于试探性的服务器响应是否正确,即是否能接受真正的请求,如果在options请求之后获取到的响应是拒绝性质的,例如500等http状态,那么它就会停止第二次的真正请求的访问

大致说明一下,有三种方式会导致这种现象:

1:请求的方法不是GET/HEAD/POST

2:POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain

3:请求设置了自定义的header字段

比如我的我的Content-Type设置为“application/json;charset=utf-8”并且自定义了header选项导致了这种情况。
版权声明:本文为CSDN博主「蓝-锋」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kahhy/article/details/81563063

转载于:https://www.cnblogs.com/mzdljgz/p/11412429.html

http预请求options相关推荐

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

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

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

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

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

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

  4. HTTP 之 options预请求

    目录 一.HTTP一共有八种常见请求方法 二.什么是预请求 三.为什么需要 四.什么情况下发生(以下都属于复杂请求) 五.为什么需要设置成contentType:"application/j ...

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

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

  6. Postman + Pre-resuestScript:预请求脚本发送POST请求

    使用postman调试业务接口,往往都需要使用 Token Token往往会过期,这时候就需要手动调用登录接口获取最新的Token postman的预请求脚本(Pre-resuestScript)就可 ...

  7. 关于浏览器预检(OPTIONS)请求

    浏览器在什么情况下会发起options预检请求? 在非简单请求且跨域的情况下,浏览器会发起options预检请求. 关于简单请求和复杂请求: 1 简单请求 简单请求需满足以下两个条件 请求方法是以下三 ...

  8. php避免options请求,OPTIONS请求 已阻止跨源请求:CORS 头缺少 'Access-Control-Allow-Origin'...

    以node koa为例 app.use(function *(){ let {method, url, header} = this.request; this.set('Access-Control ...

  9. HTTP中的options请求详解

    跨域开发过程中,遇到options(预请求)请求,服务端接收后报错,需要后台对options请求过滤 浏览器请求中出现options请求原因:浏览器对跨域请求中出现简单跨域请求和复杂跨域请求的处理 X ...

最新文章

  1. 【项目管理】敏捷小品:Rupert 工业公司 项目:~Alpha~
  2. 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
  3. 单元测试框架之Robolectric踩坑
  4. hbase 特性与api
  5. redis映射的概念_Redis存储总是心里没底?你大概漏了这些数据结构原理
  6. 最大堆和最小堆和平衡二叉树_最小堆二叉树
  7. python哪些是可变对象_python 中的可变对象与不可变对象
  8. JavaScript输出数组中有几个字符串中包含“a”或“A”
  9. vc++2010注册表修改
  10. Ubuntu18搭建SVN可视化工具if.svnadmin
  11. 利用lnmp一键安装的php环境忘记mysql,root用户密码解决方法
  12. 夏普计算机各键功能,夏普打印机按键说明
  13. 将英汉词典数据库放入MySQL数据库中,并将数据库中“以A开头的单词”显示在JSP网页上
  14. 我整理的ubuntu开源软件列表,适合于极客
  15. mmap()、munmap()的用法、例子
  16. Python多线程下调用win32com包相关问题:pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。‘, None, None)问题处理
  17. [译]Kotlin中是应该使用序列(Sequences)还是集合(Lists)?
  18. 游戏性的根本——浅谈游戏关卡设计
  19. 期待2021 期待全新的自己
  20. 查询被占用的端口和关闭端口

热门文章

  1. python3连接mysql数据库_python3.4连接mysql数据库
  2. QT:常用函数详解--常用操作记录(个人笔记)
  3. Hadoop的学习前奏(一)——在Linux上安装与配置Hadoop
  4. [转]Linux C语言头文件搜索路径
  5. xxx cannot be resolved to a type 问题的几种常见原因
  6. guido正式发布python年份_Python 基础学习笔记.docx
  7. 计算机学院 储昭坤,我校在“展航杯”安徽省大学生信息安全作品赛荣获佳绩...
  8. 阿里巴巴的 Kubernetes 应用管理实践经验与教训
  9. java进出栈_JVM函数调用:Java出入栈
  10. c语言可移植性较差吗,c陷阱与缺陷--可移植性缺陷