划重点:如果被别人问到,其实这是在迷惑你,发送两次请求的情况确实存在,但这与你所使用的是不是http协议,所采用的是不是fetch真的没有任何关系!

我们所说的发送2次请求,其实就是在跨域请求时,编写了带预检请求的代码导致多了一次名为OPTIONS的尝试请求

发送2次请求需要满足以下2个条件:

  1. 必须要在跨域的情况下
  2. 除GET、HEAD和POST(content-type: application/x-www-form-urlencoded, multipart/form-data, text/plain Content-Type)以外的跨域请求(我们可以称为预检(Preflighted)的跨域请求)。

总结:

之所以会发送2次请求,那是因为我们使用了带预检(Preflighted)的跨域请求。该请求会在发送真实的请求之前发送一个类型为OPTIONS的预检请求。预检请求会检测服务器是否支持我们的真实请求所需要的跨域资源,唯有资源满足条件才会发送真实的请求。比如我们在请求头部增加了authorization项,那么在服务器响应头中需要放入Access-Control-Allow-Headers,并且其值中必须要包含authorization,否则OPTIONS预检会失败,从而导致不会发送真实的请求

fetch发送2次请求的原因分析相关推荐

  1. http协议修改js或html,web前端面试题对答篇:HTTP fetch发送2次请求的原因?

    web前端面试题对答篇:HTTP fetch发送2次请求的原因? 2020-08-31 04:36:44 289 编程开发 HTTP fetch发送2次请求的原因?面对这道出现频率较高的面试题,我想说 ...

  2. winform接收http请求_web前端面试题对答篇:HTTP fetch发送2次请求的原因?

    HTTP fetch发送2次请求的原因?面对这道出现频率较高的面试题,我想说的是:发送两次请求的情况确实存在,但这与你所使用的是不是http协议,所采用的是不是fetch真的没有一毛钱关系! 接下来, ...

  3. python requests form data_python使用requests发送multipart/form-data请求数据

    def client_post_mutipart_formdata_requests(request_url,requestdict): #功能说明:发送以多部分表单数据格式(它要求post的消息体分 ...

  4. 获取portal服务器信息超时,Portal认证提示“向设备发送请求超时”问题分析

    Portal认证提示"向设备发送请求超时"问题分析 一. 问题描述: 某局点反馈:Portal网页认证输入用户名密码点击,页面提示"向设备发送请求超时". 二. ...

  5. fetch 发送 AJAX请求

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  6. Fetch发送网络请求

    1. 文档 https://github.github.io/fetch/ https://segmentfault.com/a/1190000003810652 2. 特点 fetch: 原生函数, ...

  7. 1. HbuliderX-移动端APP开发-前端开发ajax请求失败或错误-常见问题-原因分析-处理

    文章目录 一. 常见问题原因分析处理 1. 请求地址URL不对 2. 防火墙拦截 3. 网络环境不匹配 4. 服务器端口问题 一. 常见问题原因分析处理 1. 请求地址URL不对 检查 [IP+端口+ ...

  8. 【AJAX 笔记】AJAX 基本、HTTP 基本、原生 AJAX 的使用,jQuery / Axios / fetch 发送请求、跨域(JSONP/CORS)

    文章目录 1 Ajax 概述 1.1 AJAX 简介 1.2 XML 简介 1.3 AJAX 的特点 1.3.1 AJAX 的优点 1.3.2 AJAX 的缺点 1.4 AJAX 属性和方法 2. H ...

  9. DB2中常见sqlCode原因分析

    DB2中常见sqlCode原因分析 000 | 00000 | SQL语句成功完成 01xxx | SQL语句成功完成,但是有警告 +012 | 01545 | 未限定的列名被解释为一个有相互关系的引 ...

最新文章

  1. 如何让UTF-8能对文档XML编辑
  2. linux下使用ffmpeg命令录屏桌面
  3. 全球首个无人驾驶政策颁布,各大巨头并不完全买账
  4. VC++ CryptoAPI最基本编程
  5. springboot+mybatis测试时遇到java.lang.NullPointerException
  6. HDU4099(斐波那契数列与字典树)
  7. 全球计算机科学硕士申请,2019爱尔兰留学都柏林大学计算机科学硕士申请
  8. 同态加法_同态—当旧趋势突然变酷时
  9. 好久不来这里写东西了.
  10. mysql导出表_mysql导出表的3种方式
  11. centos7 修改为任意网卡名_centos7首次启动需要配置的内容
  12. 使用HttpClient发送WebService Security(WSS)请求
  13. iOS绘图框架CoreGraphics分析
  14. python识别鼠标在excel中选中的区域_[Excel技巧] 提高你工作效率的9个Excel技巧,职场新人必备...
  15. PreparedStatement 防止 SQL 注入原理
  16. java 打印 xps_使用Java 将PPT转换为PDF、XPS等格式
  17. 本地计算机添加网络打印机共享,如何连接共享打印机?一步一步教你设置和连接局域网共享打印机...
  18. matlab中三维数组,维数转换
  19. OpenPose+VS2015+Windows+CUDA8+cuDNN5.1 官方配置教程
  20. Add Python Interpreter 报错 Error code:2. XX can‘t open file XX [Errno 2] No such file or directory

热门文章

  1. 图解组织效能及人均效能指标大全和计算方法
  2. Oracle中对查询条件进行按拼音/笔画/部首order by排序
  3. 怎样查看mysql的账户和密码_怎么查到mysql的账号密码是什么?
  4. 深圳的中学计算机课学什么时候,AP 计算机 专业高效 深圳中学学生如何说
  5. 帮我写一个风光互补发电系统功率优化分配程序
  6. 2021-10-28 SDR模块RSP1收听并显示ADS-B 航班信息
  7. rabbitMQ pika demo
  8. 巨蟹座最彰显个性的纹身 白羊座男生玩弄感情的原因
  9. excel两个表格数据对比_快速对比excel表格两个sheet中不同的数据,极大的降低重复工作量...
  10. 修改Typora编辑器的字体