• CORS跨域请求总结


    CORS跨域请求分为简单请求和复杂请求。

    1. 简单请求:

    满足一下两个条件的请求。

    (1) 请求方法是以下三种方法之一:

    • HEAD
    • GET
    • POST

    (2)HTTP的头信息不超出以下几种字段:

    • Accept
    • Accept-Language
    • Content-Language
    • Last-Event-ID
    • Content-Type:只限于三个值application/x-www-form-urlencodedmultipart/form-datatext/plain

    2. 复杂请求:

    非简单请求就是复杂请求。

    非简单请求是那种对服务器有特殊要求的请求,比如请求方法是PUTDELETE,或者Content-Type字段的类型是application/json

    非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。

    预检请求为OPTIONS请求,用于向服务器请求权限信息的。

    预检请求被成功响应后,才会发出真实请求,携带真实数据。

    3. CORS与cookies:

    上面说到,CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。

    
    Access-Control-Allow-Credentials: true
    

    另一方面,开发者必须在AJAX请求中打开withCredentials属性。

    
    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;//XMLHttpRequest level2才有withCredentials属性

    4. 减少预检请求次数

    服务端设置Access-Control-Max-Age可以将预检请求进行客户端缓存,减少请求次数

    具体可以参考:http://www.ruanyifeng.com/blog/2016/04/cors.html

  • 相关阅读:
    eclipse中,把java函数代码折叠/展开 介绍【转】
    苹果开发者账号注册&真机调试
    Objective-C编码规范:26个方面解决iOS开发问题
    iTunes获取下载的安装包
    Mac AppStore下载文件的获取
    Mac 切换Windows 使用虚拟机, 不推荐双系统
    Xcode使用版本
    如何提高代码质量
    ARC的内存管理
    Objective-C 类的继承、方法的重写和重载
  • 原文地址:https://www.cnblogs.com/mengff/p/7362048.html
Copyright © 2020-2023  润新知