美文网首页
7-CORS跨域限制以及预请求验证

7-CORS跨域限制以及预请求验证

作者: 谷子多 | 来源:发表于2018-07-12 23:35 被阅读0次

自定义的头在跨域请求时不被允许的

        fetch('http://localhost:8887/',{
            method:'POST',
            headers:{
                // 自定义头
                'X-Test-Cors':'123'
            }
        })

自定义的头在跨域请求时不被允许的

CORS预请求限制

跨域时默认允许的方法

  • GET
  • HEAD
  • POST

允许Content-Type

  • text/plain
  • multipart/form-data
  • application/x-www-form-urlendoded

其他限制

  • 请求头限制
  • XMLHttpRequestUpload对象均没有注册任何事件监听器
  • 请求中没有使用ReadableStream对象

什么是预请求

浏览器根据Response Headers判断请求是否允许


31ABEC72-7A20-4D65-AAE0-E51B99278EF9.png

解决:设置允许访问的自定义请求头

http.createServer(function(request,response){
    console.log('request come',request.url)
    response.writeHead(200,{
        'Access-Control-Allow-Origin':'*',
        // 设置允许访问的自定义请求头
        'Access-Control-Allow-Headers':'X-Test-Cor'

    })
    response.end('123')
}).listen(8887)

浏览器跨域请求之预请求操作:Request Method:OPTIONS,首先发送这个请求,服务端可以根据不同的method进行不同的操作,允许接下来实际发送的请求。通过这个OPTION来获得服务端允许的任何请求,然后再实际发送设置的请求。


浏览器为什么设置请求限制?
因为浏览器希望在网页进行跨域请求操作的时候是保证服务端的安全的,不允许任何随便进行跨域,不允许随便的方法进行跨域,以防数据被恶意篡改。所以提供这些限制之后,就可以进行一些非常有利的判断。

http.createServer(function(request,response){
    console.log('request come',request.url)
    response.writeHead(200,{
        // 设置允许跨域的访问地址
        'Access-Control-Allow-Origin':'*',
        // 设置允许访问的自定义请求头
        'Access-Control-Allow-Headers':'X-Test-Cors',
        // 设置允许跨域的methods
        'Access-Control-Allow-Methods':'POST,Put,Delete',
        // 允许以上三个方式进行跨域的最长时间,1000秒内不需要发送预请求验证了
        'Access-Control-Max-Age':'1000'
    })
    response.end('123')
}).listen(8887)

相关文章

  • 7-CORS跨域限制以及预请求验证

    自定义的头在跨域请求时不被允许的 CORS预请求限制 跨域时默认允许的方法 : GET HEAD POST 允许C...

  • HTTP 协议原理(二):总览各种特性

    目录 1 模拟跨域请求 2 CORS 跨域限制以及预请求验证 3 Cache-Control 的含义和使用 4 L...

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

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

  • http协议篇

    cors预请求(跨域的时候回出现预请求的验证 ) 允许的方法有 GET HEAD POST 允许的Content-...

  • 3-3 CORS跨域限制以及预请求验证

    1、请求的时候增加请求头 2、预请求 查看预请求限制的文档: 3、预请求显示Header的demo 设置允许的请求...

  • axios发送俩次请求的原因

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

  • 产生跨域的原因

    产生跨域的原因 浏览器的限制 跨域 XHR(XMLHttpRequest)请求 1、浏览器的限制 2、跨域 跨域概...

  • 跨域

    什么是跨域? 为什么会发生ajax跨域?浏览器限制跨域【发出的请求不是本域】XHR请求【json】 解决思路:1:...

  • ajax跨域相关学习

    1.跨域请求失败产生的原因1.1.浏览器限制1.2.xhr(XMLHttpRequest)请求1.3.跨域(不同域...

  • Ajax跨域请求与SpringMVC结合的一些坑

    Ajax跨域的概念就不在这边陈述了... Ajax跨域请求真正的请求之前会进行一次预请求OPTIONS请求,为了让...

网友评论

      本文标题:7-CORS跨域限制以及预请求验证

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