背景
第一次尝试react框架,在本地调试前端npm start,调用后端接口采用设置host 127.0.0.1 ,前端代码配置如下可完美解决本地跨域问题。
因为是自建平台且只需要部署daily环境,通过def部署前端工程后,遇到了HTTP和HTTPS协议不匹配,因为def部署后是https的,而我的服务端工程部署在daily环境默认都是http的。一开始以为是协议问题,但也没打算部署到线上环境,那样成本太大。最后发现是因为跨域了。于是“坑”就由此开始了.....
截止目前还是有个巨坑,对一只好无前端专业功底的小菜鸡的我来说太难了,希望能有同学能帮忙答疑解决一下。
跨域遇到的坑坑一:This has been :the must be over HTTPS.
问了开发,告诉我如果解决跨域也就自然解决该问题了,这样的block是浏览器行为,无法提供服务端设置--Allow-解决问题。
解决方案:把页面拷贝到后端工程。
一开始以为迁移那么多页面和资源任务非常繁重,最后发现不需要。因为react pc代码多为单页面应用,只需要拷贝以下代码放到后端的的目录index.html里。
后台加一个页面跳转即可:
坑二:跳转到的不是页面前端解决跨域问题,是个字符串
于是尝试了加静态资源的路径配置:..-=://,依然保持原样
再次尝试修改方法,依然没用
解决方案:需要增加这种模板类型的依赖,就能跳转到index页面了。
3、坑三:因为是服务端公用的,不想占用index路径,想前面增加一层目录/fyapp/,切换到已有的类中增加了跳转,又变成“index”字符串了。
找了很多资料和原因,尝试了各种解决方案,一直怀疑是目录层级多了一层的关系,最终找到了一个巨坑:**@注解**
解决方案:去掉@注解改成@
之前没注意到这个注解,因为接口返回json都使用习惯了,但是**@是@和@的结合体。(坑二那边是因为新建的没有使用这个注解)** ** 这下相当于页面和资源都融合在服务端代码里了,访问服务端的域名就顺利访问了!这样一通操作下来前端解决跨域问题,前端还是可以用之前的host域名来调试,访问的是本地静态资源,服务端页面引用的是cdn上的资源,也没有太大关系。
BUC接入再遇跨域问题
尝试接入了集团的buc,这样一来再使用前端的host绑定域名就直接报错: