https 页面不能调用http接口问题记录

首先说一下,  并没有解决这个问题,  最后还是把http 接口变成 https.

之前接了个项目 , 前台用的vue, 后台是tomcat, Java,  前后端分离, tomcat 已经做好https配置.

接到项目后需要新增功能接口, 但我是用python的, java两年没用了, 重新配置环境比较麻烦, 所以还是用python开发新功能, 反正它是前后端分离嘛.

在本地调试是没问题的, vue 的config.js 可以配置跨域,

部署到生产环境时, 原先的页面和接口都是https环境, 而且vue打包发布后跨越配置就不再起作用, 只能重新配置接口的baseURL, 然后通过tomcat server.xml context 配置转发到vue打包文件路径和Java后台接口路径,  

但是我的新功能接口, python接口是是http 的,  https页面访问python接口, 浏览器会阻止, 因为https访问http接口就会禁止,  想在服务器用tomcat 去转发到我的python接口, tomcat又做不到 ,  怎么办?

想了两个方法 :

1. 在申请一个二级域名, 申请ssl证书,  服务器再开个端口, 用nginx 做服务器, 来转发python接口

2. 全部用nginx转发, nginx监听80, 下载ssl证书配置https,  而tomcat 去掉443、https配置, 把监听80改回监听8080端口, context配置不变,  nginx 负责转发到tomcat , 和python接口, tomcat 还可以继续转发到vue页面打包文件和java接口.

 

最后采用了第二种方法 , 解决了架构问题.

 

总结:

1. 碰到接别人做过的项目时, 前后端分离就体现出了优点, 因为可以用自己熟悉的语言去写接口.

2. nginx 七层转发, 还是牛逼啊.

3. nginx 配置http 转https:

server {
    listen 80;
    server_name pms.wenwenmao.com;
    rewrite ^(.*)$ https://$host$1 permanent;
}

 

你可能感兴趣的:(https 页面不能调用http接口问题记录)