如果在base.js 中设置跨域,如果请求在Logic这里效验不通过,前台就会报跨域错误。
最佳方案是在中间件里面设置跨域。

第一步
在config 的中间件配置里面,启用一个自定义中间件,这个可以是你的模块名称什么的,然后设置下仅在访问模块的方法的时候生效,一般前后端分离是写后台界面时候产生,所以我这里设置admin。

{handle: 'admin',match: ctx => {const url = ctx.path;if (url.slice(0, 6).toLowerCase() === '/admin') {console.log("调用admin中间件");return true;}return false;},options: {}},

第二步
创建跨域处理的js,
如果没有origin头部表示并非跨域,就直接next。
如果存在,就设置跨域头部,
然后再判断是否options请求,如果不是就next,让它进入控制器中,
如果是options请求就设置状态码为204。

module.exports = (options, app) => {return (ctx, next) => {const requestOrigin = ctx.get('Origin');if (!requestOrigin) {console.log('非跨域连接')return next();}console.log('跨域连接')ctx.set('Access-Control-Allow-Origin', requestOrigin || "*");ctx.set('Access-Control-Allow-Methods', 'POST,GET,OPTIONS');ctx.set('Access-Control-Allow-Credentials', true);ctx.set('Access-Control-Max-Age', 3600);ctx.set('Access-Control-Allow-Headers', 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With');if (ctx.method !== 'OPTIONS'){return next();}ctx.status = 204;console.log('options请求')}
}

thinkjs 解决跨域最优方案相关推荐

  1. 服务端解决跨域问题的方案(二)

    一分钟说明 本文主要基于Nginx的配置来解决服务端跨域问题. 涉及知识点: - Nginx的配置 Nginx的跨域配置 location /project {proxy_pass http://10 ...

  2. 服务端解决跨域问题的方案(一)

    转自: http://blog.csdn.net/james_wade63/article/details/50772041 跨域是指html文件所在的服务器与ajax请求的服务器是不同的ip+por ...

  3. 【javaWeb微服务架构项目——乐优商城day03】——(搭建后台管理前端,Vuetify框架,使用域名访问本地项目,实现商品分类查询,cors解决跨域,品牌的查询)

    乐优商城day03 0.学习目标 1.搭建后台管理前端 1.1.导入已有资源 1.2.安装依赖 1.3.运行一下看看 1.4.目录结构 1.5.调用关系 2.Vuetify框架 2.1.为什么要学习U ...

  4. 解决跨域常见方案(is therefore not allowed access)

    目录 什么是跨域: 跨域问题的产生原因: 什么标签可以跨域 几种解决跨域的常见方案 什么是跨域:  在同一网页中 访问多个不同域名下的接口获取数据,即不同域名或不同端口或不同协议的接口.这种现象就是跨 ...

  5. Node.js 模块化的操作,简单明了的代码帮助你明白后端的实现和前端之前的交互,及解决跨域等问题

      Node.JS 模块化 1.require 导入模块const http=require('http')2.exports 导出模块db={name:'jine',age:22} module.e ...

  6. 第九节:解决跨域问题与实现品牌查询

    此博客用于个人学习,来源于网上,对知识点进行一个整理. 1. 跨域问题: 以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 ...

  7. JAVA商城项目(微服务框架)——第7天nginx+cors解决跨域+品牌+分类查询

    0.学习目标 使用资料搭建后台系统 会使用nginx进行反向代理 实现商品分类查询功能 掌握cors解决跨域 实现品牌查询功能 1.搭建后台管理前端 1.1.导入已有资源 后台项目相对复杂,我们不再从 ...

  8. Nginx 解决跨域问题

    什么是跨域 当一个请求url的协议.域名.端口三者之间任意一个与当前页面url不同即为跨域 nginx解决跨域请求 nginx.config配置 server {listen 80;server_na ...

  9. 微服务架构(5):nginx反向代理cors解决跨域

    微服务架构(5):nginx反向代理&&cors解决跨域 学习目标 1.使用域名访问本地项目 1.1.统一环境 1.2.域名解析 1.3.解决域名解析问题 1.4.nginx解决端口问 ...

最新文章

  1. 算法---------数组-----------移动零
  2. 网页性能优化03-函数防抖
  3. 加一—leetcode66
  4. jooq_jOOQ星期二:拉斐尔·温特豪德(Rafael Winterhalter)正在与字节好友合作字节码...
  5. python学习day32 黏包 struct模块
  6. 指针错位导致对FSD误判
  7. 你的计算机无法启动一键还原,电脑一开机就进入dos之家的一键还原硬盘版,无法进入系统...
  8. 苹果手机录屏软件_手机录屏高清软件下载-手机录屏高清 安卓版v1.0.0
  9. 简历制作-技术栈和项目经历如何写?
  10. looking for domain authoritative name server and domain name location
  11. Monkey测试黑白名单
  12. @Scheduled同步多线程配置
  13. 蓝桥杯魔方旋转问题(python)
  14. KDD 2020(五) | 基于多源异构信息整合的视频标题生成模型(作者带你读论文)...
  15. KeyError: ((1, 1), ‘<i8‘)
  16. python基础第二课(小白piao分享)
  17. 重构改善代码--代码的坏味道
  18. 格斗机器人制造图纸_轮式格斗机器人的制作方法
  19. SpringBoot2.x系列教程11--小花样之SpringBoot其他常用配置
  20. mellanox 网卡驱动_Mellanox驱动安装—源码包的使用

热门文章

  1. 蓝桥杯 java 放麦子_蓝桥杯——舍罕王赏麦子
  2. mysql用脚本导入csv_用脚本把csv文件导入mysql
  3. 华为发布全球首个全性能端到端HSDPA商用方案
  4. 可以恢复格式化数据的软件
  5. 教育邮箱白嫖office365
  6. GitHub是个啥?咋用?
  7. java设计模式六大原则之场景应用分析
  8. flash特效原理:倒影效果
  9. requestPermissions读写手机存储权限_2020年新版手机QQ接受文件存在哪里?钛备份闪退等使用教程...
  10. 网络电视软件sopcast安装 for ubuntu