zoukankan      html  css  js  c++  java
  • cors跨域请求

    说明

    协议(http,https等),域名,端口任何一个不同,浏览器请求将会发生跨域请求。
    跨域资源共享(cors)允许web应用服务器进行跨域访问控制。从而使跨域数据传输得以安全进行。cors需要客户端和服务器同时支持,目前所有的浏览器都支持该机制。
    跨资源共享标准新增了一组http首部字段,允许服务器声明那些源站有权限访问哪些资源。对那些可能对服务器数据产生副作用的的http请求方法(特别是GET以外的http请求),浏览器必须使用OPTIONS方法发起一个预检请求(preflight request),从而获知服务器是否允许该跨域请求。
    服务器确认允许之后,才发起实际的http请求。

    简单请求

    某些请求不会触发 CORS 预检请求。本文称这样的请求为“简单请求”。
    同时满足一下所有条件可视为简单请求。

    1.使用如下方法:HTTP,HEAD,POST
    2.content-type属于以下几种:application/x-www-form-urlencoded,multipart/form-data,text/plain

    跨域请求服务器返回Access-Control-Allow-Origin: *,表明Origin(请求来源)所指定的任何域名都可以访问,如果写某几个,则除了所写的以外都不可以访问。

    非简单请求

    • 预检请求
      当满足以下任何一个条件时,使用 OPTIONS方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求。

    1.使用了以下任何一个http方法:PUT,DELETE,CONNECT,OPTIONS,TRACE,PATCH
    2.人为设置了对 CORS 安全的首部字段集合之外的其他首部字段。即不属于以下集合的,该集合为:Accept,Accept-Language,Content-Language,Content-Type ,DPR,Downlink,Save-Data,Viewport-Width,Width.
    3.content-type不属于以下几种:application/x-www-form-urlencoded,multipart/form-data,text/plain

    HTTP 请求首部字段

    如预检请求中,在OPTIONS头中有

    Origin:

    它不包含任何路径信息,只是服务器名称。

    Access-Control-Request-Method: POST
    Access-Control-Request-Headers: Sid

    向服务器说明请求使用POST方法,且有自定义的头Sid。

    HTTP 响应首部字段

    Access-Control-Allow-Origin: *

    服务器返回Access-Control-Allow-Origin允许来自任意域名的请求

    Access-Control-Allow-Methods: POST, GET, OPTIONS
    Access-Control-Allow-Headers: Sid, Content-Type

    服务器返回Access-Control-Allow-Origin允许来自任意域名的请求。允许的方法和允许携带的header。

    Access-Control-Expose-Headers: X-Another-Custom-Header

    首部字段指定了服务端允许的首部字段集合。

    Access-Control-Max-Age:

    首部字段指明了预检请求的响应的有效时间.

    Access-Control-Allow-Credentials: true

  • 相关阅读:
    浅谈JavaScript中forEach与each
    Angular.js中使用$watch监听模型变化
    整理:Javascript获取数组中的最大值和最小值的方法汇总
    自定义指令的参数
    ng-disabled 不起作用的解决办法
    理解Angular中的$apply()以及$digest()
    $q -- AngularJS中的服务(理解)
    正则表达式30分钟入门教程(转)
    angular.extend用法实例
    使用angular.bootstrap() 完成模块的手动加载
  • 原文地址:https://www.cnblogs.com/mentalidade/p/6994113.html
Copyright © 2011-2022 走看看