美文网首页
再谈CORS

再谈CORS

作者: singno | 来源:发表于2016-11-09 12:30 被阅读0次

承接上文 HTTP访问控制(CORS)

关于CORS的说明,这篇MDN文章 论述地非常详细、精彩,建议大家先阅读几遍。

知识点

简单请求
  1. 只使用GET、HEAD、POST
  2. 不使用自定义请求头
预请求
  1. GET、HEAD、POST以外的请求,或POST内容不为text/plain,
    application/x-www-form-urlencodedmultipart/form-data
    类型
  2. 使用自定义请求头

预请求流程:

预请求流程
HTTP响应头

Access-Control-Allow-Origin: http://www.example.com
配置Access-Control-Allow-Origin: *则允许所有域名访问;需要注意的是,该头部是无法配置多个域名的,因此需通过nginx或者程序控制。

Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header
设置允许浏览器访问的响应头白名单。

Access-Control-Max-Age: 100
设置预请求缓存时间(单位秒)。预请求会导致2次请求roundtrip,是会影响服务性能的。

Access-Control-Allow-Credentials: true
原文的解释有点绕,通俗点讲,就是与客户端xhr.withCredentials = true配套使用,用来传递cookie的。

Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, OPTIONS
由于rest接口通常会有PUT | DELETE等操作,所以导致该响应头也成为标配。

Access-Control-Allow-Headers: X-PINGOTHER, X-HEADER
预请求中告诉浏览器可以使用哪些自定义头部。

HTTP请求头
  1. Origin
  2. Access-Control-Request-Method
  3. Access-Control-Request-Headers(请求中会使用的自定义HTTP头)

请求头比较简单,不赘述。

开工撸代码

  // 客户端请求时,记得设置 xhr.withCredentials = true
  // express中间件
  app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', 'http://www.example.com');
    res.header('Access-Control-Allow-Credentials', 'true');
    res.header('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');

    next();
  });

相关文章

  • 再谈CORS

    承接上文 HTTP访问控制(CORS) 关于CORS的说明,这篇MDN文章 论述地非常详细、精彩,建议大家先阅读几...

  • 如何处理浏览器的跨域问题

    第一种方式 CORS 首先你需要阅读CORS,首先你需要阅读CORS,首先你需要阅读CORS,重要的事情说3遍 当...

  • Express: 启用 cors

    我的自建博客上的文章原地址:Express: 启用 cors 什么是 CORS CORS ([Cross-Orig...

  • express 解决跨域

    使用cors中间件解决跨域问题 npm install cors 安装中间件 const cors = requ...

  • 跨域

    1、Json jsonp 只能支持 get 请求; 2、cors cors 可以支持多种请求。cors 并不需要前...

  • 跨域【详解】

    本篇有四种方法跨域:CORS、JSONP、降域、window.postMessage() 1. CORS CORS...

  • egg

    一 、egg.js之解决跨域问题(egg-cors) 下载 egg-cors 包npm i egg-cors --...

  • express解决跨域问题

    有以下2种解决办法: 第一种,使用cors插件 先安装cors插件 npm install cors --save...

  • 初探CORS

    这篇博客的目的是探究一下CORS前后端的实现 CORS是什么? CORS全拼是Cross-Origin Resou...

  • Java Web前后端分离中CORS配置及OPTIONS请求优化

    Java Web前后端分离中CORS配置及OPTIONS请求优化 0x00 CORS 概述 跨域资源共享(CORS...

网友评论

      本文标题:再谈CORS

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