最近搞了个新项目(tp6+php7.1+vue) 选用tp6 期间有几点依稀还记得的坑 随笔记录一下。
大致介绍一下,本项目采取多应用模式进行了,分库业务处理,且业务逻辑有穿插。
一.中间件解决跨域时候的疑惑和解决方案
1.IOS系统浏览器跨域兼容问题
因为前后分离,二级域名前端和后端分了两个导致跨域问题。按照传统方法中间件去解决跨域问题,一直不成功。最后自定义中间件,且允许域不能用*必须指定二级域名(和请求头必须一致)才得以解决,解决方案包含了mac系统浏览器的兼容问题。
2.控制器中间件失效(前置中间件后置中间件都做了尝试(写在控制层或者项目全局),跨域中间件无效)
因为项目整体式多应用模式,所以我先采用了全局模式在这个项目下采用跨域处理问题,但是发现失效,没有深追原因。最终解决方式是在路由层(应用项目目录下的route)编写强制路由时候中间件写在路由中采用后置中间件解决此问题。
补充:猜测是因为在控制层添加中间件修改响应头,在tp6生命周期中会有对响应头的修改 必须让跨域头的设置放在最后进行生效(也是个人猜测,有空会多查资料了解一下相关问题)
3.生成环境一定切记去修改.env中的debug,其它浏览器都无异常。唯独火狐会报异常。切记!生产关闭debug
会随项目进行补充..