美文网首页
HTTP跨域时为何要发送options请求?

HTTP跨域时为何要发送options请求?

作者: 蓝海00 | 来源:发表于2023-03-07 11:54 被阅读0次

1. 什么是跨域?

  • 浏览器同源策略,默认限制跨域请求
  • 同源策略一般限制 Ajax 网络请求, 不能跨域请求 sever
  • 但是不会限制 <link> <img> <script> <iframe> 加载第三方资源

1.1 怎么样解决跨越(常用办法)

都需要后端配合

  • jsonp
<!-- www.aaa.com 网页 -->
<script>
    window.onSuccess = function(data) {
        console.log(data)
    }
</script>
<script src="https://www.bbb.com/api/getData"></script>

// https://www.bbb.com/api/getData 返回一段字符串
'onSuccess({ code:200, data: {/*数据内容*/} })'
  • CORS 目前大部分解决跨域的方案
// CORS 配置允许跨域(服务端)
response.setHeader("Access-Control-Allow-Origin", "http://localhost:8011") // 或者 '*'
response.setHeader("Access-Control-Allow-Headers", "X-Requested-With")
response.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS")
response.setHeader("Access-Control-Allow-Credentials", "true") // 允许跨域接收 cookie

2. options 请求

使用cors跨域请求时,经常会看到一个“多余”的 options 请求, 之后才会发送实际的请求



该请求是为了检查服务端的 headers 信息, 是否符合客户端的预期,所以它没有 body 的返回

规范要求, 对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是GET以外的HTTP请求,或者搭配某些MIME类型的POST请求),浏览器必须首先使用OPTIONS方法发起一个预检请求(preflight request),从而获知服务器是否允许跨域请求。

options请求就是对CORS跨域请求之间的一次预检查,检查成功再发起正式请求,是浏览器自行处理的

相关文章

  • axios发送俩次请求的原因

    其实跨域分为简单跨域请求和复杂跨域请求 简单跨域请求是不会发送options请求的 复杂跨域请求会发送一个预检请求...

  • AJAX出现两次请求 options和get|post

    跨域请求 允许跨域请求 preflighted request预请求(options) 跨域请求 XMLHttpR...

  • http跨域时的options请求

    一、简介 出于安全考虑,并不是所有域名访问后端服务都可以。其实在正式跨域之前,浏览器会根据需要发起一次预检(也就是...

  • http跨域时的options请求

    一、简介 二、两种请求方式 同时满足下列三大条件,就属于简单请求,否则属于非简单请求 1.请求方式只能是:GET、...

  • ajax中出现两次请求,OPTIONS请求和GET请求

    HTTP的OPTIONS方法 查找原因是浏览器对简单跨域请求和复杂跨域请求的处理区别 preflighted re...

  • CORS跨域预检查的坑

    跨域预检查的事先请求(Pre-flight Request)会使用OPTIONS方法发送请求,所以在flask中,...

  • 【JAVA】面试题整理

    http的options请求是什么 1、获取服务器所支持的通信方式2、跨域请求中,options请求是浏览器自发起...

  • http options请求

    OPTIONS请求即预检请求,可用于检测服务器允许的http方法。当发起跨域请求时,由于安全原因,触发一定条件时浏...

  • axios每次发送两次请求

    axios每次发送请求会有两次,多一次Request Method: OPTIONS是怎么回事? 其实跨域分为简单...

  • HTTP之跨域预请求options

    今天分享一个关于预请求的,我们先写一个接口,新建server.js,代码: const http = requir...

网友评论

      本文标题:HTTP跨域时为何要发送options请求?

      本文链接:https://www.haomeiwen.com/subject/ryzvldtx.html