zoukankan      html  css  js  c++  java
  • CORS权限控制

    CORS权限控制

    CORS是一种新的数据交互标准。

    依旧是XHR请求,但是克服了ajax的跨域问题。

    请求类别

    CORS主要分为两种请求方式:简单请求和非简单请求

    只要满足两个条件就是简单请求:

    1. 请求的方法是HEAD或GET或POST

    2. HTTP的头部信息不超出以下字段:Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type

    其中Content-Type的值只可以是application/x-www-form-urlencoded、multipart/form-data、text/plain.

    其余都是非简单请求

    简单请求 simple request

    浏览器发起一个简单请求,在头信息中多加了一个Origin字段。

    GET /cors HTTP/1.1
    Origin: http://api.bob.com
    Host: api.alice.com
    Accept-Language: en-US
    Connection: keep-alive
    User-Agent: Mozilla/5.0...
    

    服务器依据设置判断是否允许来自Origin的地址的访问,如果允许就返回请求的值。

    Access-Control-Allow-Origin: http://api.bob.com

    返回的值中会有Access-Control-Allow-Origin字段,代表允许的地址值。

    Access-Control-Allow-Origin 可以设置为 * ,代表允许任何地址访问。

    非简单请求

    发起非简单请求时,浏览器会先发起依次预检请求,检查Origin、Access-Control-Request-Method和Access-Control-Request-Headers之后,做出回应。

    xhr.setRequestHeader('X-Custom-Header', 'value'); //xhr请求中自定义的头部字段
    
    OPTIONS /cors HTTP/1.1
    Origin: http://api.bob.com
    Access-Control-Request-Method: PUT
    Access-Control-Request-Headers: X-Custom-Header //包含的头部自定义字段
    Host: api.alice.com
    Accept-Language: en-US
    Connection: keep-alive
    User-Agent: Mozilla/5.0...
    

    预检请求的回应

    HTTP/1.1 200 OK
    Date: Mon, 01 Dec 2008 01:15:39 GMT
    Server: Apache/2.0.61 (Unix)
    Access-Control-Allow-Origin: http://api.bob.com // 允许的地址
    Access-Control-Allow-Methods: GET, POST, PUT // 允许的方法
    Access-Control-Allow-Headers: X-Custom-Header // 允许的头部自定义字段
    Content-Type: text/html; charset=utf-8
    Content-Encoding: gzip
    Content-Length: 0
    Keep-Alive: timeout=2, max=100 // max代表此条预检请求有效期为100s,此期间内无需发起预检请求。
    Connection: Keep-Alive
    Content-Type: text/plain
  • 相关阅读:
    9、实战快速上手
    8、路由【前端实现页面的跳转】
    7、Webpack的学习【打包工具】
    6、vue的安装【nodejs、vue-cli】
    5、计算属性、内容分发、自定义事件
    4、Axios异步通信
    3、Vue表单的双向绑定以及第一个Vue组件
    2、Vue的基本属性
    PHP算法之寻找两个有序数组的中位数
    PHP算法之无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/mydia/p/7503581.html
Copyright © 2011-2022 走看看