加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

你不知道的CORS跨域资源共享

发布时间:2019-03-14 16:15:00 所属栏目:建站 来源:keywords
导读:了解下同源策略 源(origin)*:就是协议、域名和端口号; 同源: 就是源相同,即协议、域名和端口完全相同; 同源策略:同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源; 同源策略的分类: 1 . DOM 同源策

CORS非简单请求配置须知

  •  正如上图报错显示,,对于非简单请求,浏览器会先发送options预检,预检通过后才会发送真是的请求;
  •  发送options预检请求将关于接下来的真实请求的信息给服务器: 
  1. Origin:请求的源域信息  
  2. Access-Control-Request-Method:接下来的请求类型,如POST、GET等  
  3. Access-Control-Request-Headers:接下来的请求中包含的用户显式设置的Header列表 
  •  服务器端收到请求之后,会根据附带的信息来判断是否允许该跨域请求,通过Header返回信息: 
  1. Access-Control-Allow-Origin:允许跨域的Origin列表  
  2. Access-Control-Allow-Methods:允许跨域的方法列表  
  3. Access-Control-Allow-Headers:允许跨域的Header列表,防止遗漏Header,因此建议没有特殊需求的情况下设置为*  
  4. Access-Control-Expose-Headers:允许暴露给JavaScript代码的Header列表  
  5. Access-Control-Max-Age:最大的浏览器预检请求缓存时间,单位为s 

CORS完整配置

 1. koa配置CORS跨域资源共享中间件:

  1. const cors = (origin) => {  
  2.     return async (ctx, next) => {  
  3.         ctx.set({  
  4.             "Access-Control-Allow-Origin": origin, //允许的源  
  5.         })  
  6.         // 预检请求  
  7.         if (ctx.request.method == "OPTIONS") {  
  8.             ctx.set({  
  9.                 'Access-Control-Allow-Methods': 'OPTIONS,HEAD,DELETE,GET,PUT,POST', //支持跨域的方法  
  10.                 'Access-Control-Allow-Headers': '*', //允许的头  
  11.                 'Access-Control-Max-Age':10000, // 预检请求缓存时间  
  12.                 // 如果服务器设置Access-Control-Allow-Credentials为true,那么就不能再设置Access-Control-Allow-Origin为*,必须用具体的域名  
  13.                 'Access-Control-Allow-Credentials':true // 跨域请求携带身份信息(Credential,例如Cookie或者HTTP认证信息)  
  14.             });  
  15.             ctx.send(null, '预检请求')  
  16.         } else {  
  17.             // 真实请求  
  18.             await next()  
  19.         }  
  20.     }  
  21. }  
  22. export default cors 
  •  现在不管是简单请求还是非简单请求都可以跨域访问啦~

跨域时如何处理cookie

  •  cookie:

      我们知道http时无状态的,所以在维持用户状态时,我们一般会使用cookie;

      cookie每次同源请求都会携带;但是跨域时cookie是不会进行携带发送的;

  •  问题:

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读