zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    对网页图片的增删改管理
    还没搞完的排序(后期更新)
    web实现图片动态
    C++11 笔记
    如何解决刷新系统桌面响应速度很慢的问题
    CGrowableArray解析 _ DXUT容器
    测试...外部指针访问private
    CustomUI Direct3D9_Sample
    缺少.lib文件导致的Link2019 解决方案汇总
    在DirectX9中使用DXUT定制按钮来控制模型旋转的问题
  • 原文地址:https://www.cnblogs.com/mengff/p/7362048.html
Copyright © 2011-2022 走看看