美文网首页
浅谈CORS跨域请求的简单请求和非简单请求

浅谈CORS跨域请求的简单请求和非简单请求

作者: cyh_1 | 来源:发表于2019-05-19 21:08 被阅读0次

在日常开发中,我们会发现同一个请求发送了两次,但是请求方式不同,这是因为CORS请求的简单请求和非简单请求的原因。

什么是CORS跨域请求的简单请求和非简单请求

  1. 同时满足两大条件,就属于简单请求
    • 请求方式:GET、POST、HEAD(注:什么是HEAD请求?HEAD请求和GET本质是一样的,但是HEAD请求不含数据,只有HTTP头部信息)
    • HTTP头部信息不超过一下几种字段:无自定义头部字段、Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type(只有三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)
  2. 非简单请求
    • 请求方式:PUT、DELETE
    • 自定义头部字段
    • 发送json格式数据
    • 正式通信之前,浏览器会先发送OPTION请求,进行预检,这一次的请求称为“预检请求”
    • 服务器成功响应预检请求后,才会发送真正的请求,并且携带真实数据

客户端示例

$.ajax({
    url:'http://127.0.0.1:8000/getData.html',
    type:'put',
    success: function(data){
        console.log(data);
    },
})

网络请求返回示例:


image
image

服务端处理

  • 由于出现跨域的问题,所以服务端需要设置同意任意跨源请求:
    • Access-Control-Allow-Origin: *
  • 服务端的"OPTION-预检"里边一定要包含允许客户端使用非简单方式请求数据的响应头:
    • 预检”请求时,允许请求方式则需服务器设置响应头:Access-Control-Request-Method
    • 预检”请求时,允许请求头则需服务器设置响应头:Access-Control-Request-Headers
    • 预检”缓存时间,服务器设置响应头:Access-Control-Max-Age
  • 检查Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后,确认允许跨源请求
  • 服务端同意预检请求,客户端会发送真正的请求;服务端不同意预检请求,因此触发一个错误,返回到客户端

注意

  • 虽然可以通过设置响应头和响应方式等支持非简单请求,但是不到万不得已的情况,不能允许客户端发送非简单请求。因为非简单请求会使服务器比简单请求的多一倍的压力。

相关文章

  • 浅谈CORS跨域请求的简单请求和非简单请求

    在日常开发中,我们会发现同一个请求发送了两次,但是请求方式不同,这是因为CORS请求的简单请求和非简单请求的原因。...

  • 跨域方法集锦

    什么叫跨域跨域解决方法:1.cors(简单请求、非简单请求)2.jsonp3.new Image()4.nginx...

  • 简单请求和非简单请求1

    简单请求和非简单请求1 1、浏览器发送跨域请求,如何判断? 浏览器在发送跨域请求的时候,会先判断下是简单请求还是非...

  • axios发送俩次请求的原因

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

  • AJAX跨域简单请求和非简单请求

    首先我们要先知道什么是同源策略,跨域就是因为同源策略导致的 1.为什么要有同源策略 浏览器设置同源策略只是为了完全...

  • 用express实现CORS跨域

    跨域请求头 cors express 跨域请求

  • 在vue项目中使用element的Upload搭建上传功能,报跨

    根据官方提供实例 开发前已使用cors解决项目跨域问题,!CORS请求分成两类:简单请求(simple reque...

  • 9.CORS

    cors是浏览器跨域的一种规范,规定的跨域方案:通过一系列http请求头去控制跨域行为。 将请求分为两类:简单请求...

  • Springmvc支持跨域

    需要spring mvc版本4.2及以上 MVC里面需要配置: mvc:cors的配置处理get请求的跨域和非简单...

  • CORS复杂请求

    文段摘自 跨域资源共享 CORS 详解 - 阮一峰老师 浏览器将CORS请求分成两类:简单请求(simple re...

网友评论

      本文标题:浅谈CORS跨域请求的简单请求和非简单请求

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