Web:前后端http/https跨协议互相访问调用问题——使用nginx代理(好文章!!)

本文讲述了如何在搭建内部中台时,解决前端Vue静态资源通过HTTPS访问后端Flask应用的跨域问题,通过Nginx的反向代理配置实现HTTP到HTTPS的顺利通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题

搭建内部中台时遇到了一个很尴尬的问题:
搭建前端使用的vue,然后产出静态文件,用nginx代理到http的地址;
搭建后端使用的flask-restful,直接python运行,运行在http的地址;(另外吐槽下,flask-restful真心好用,但是目前资料真的太少,flask的资料多,但是作为初学者,还看不懂TAT)
内部地址找运维大大申请了,最终运行在https的地址;
问题出现了:前端使用http地址直接访问时没有问题,但是使用https访问时,请求后端是用ajax请求的http地址,报错

 

Mixed Content: The page at '[https://XXX)' was loaded over HTTPS, 
but requested an insecure XMLHttpRequest endpoint
'[http://XXX](http://XXX)'. This request has been blocked; 
the content must be served over HTTPS.

2.解决

查网上的方案主要是,将后端改造,也支持https/后端通过nginx代理成http。作为新手已经看懵了,因为还得自己配置下https证书。这些解决方案我贴到下面

但是问运维大大,找到了另外一个方案:把后端也用nginx反向代理到同一个接口,ajax请求就可以用https的啦。运维大大牛逼!
这里贴一下nginx的代理配置,希望可以帮助到其他同学~

 

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /home/data/ZheShiQianDuan; # 前端资源

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        location /HouDuanDuanKou/ {
            proxy_pass http://xxx:5000; # 这是后端端口,注意这里网址的格式没有uri,千万别写错了!!例如:http://xxx/HouDuanDuanKou/abc则访问结果为:http://xxx:5000/HouDuanDuanKou/abc
            # 如:你的后端是http://127.0.0.1:5000/api,location这里和proxy_pass都改下就行了
        }
    }

proxy_pass的格式千万别写错了,有无uri完全不同,详解可参考:https://www.jianshu.com/p/b010c9302cd0

 

感慨下,欠的债终究要补啊。不懂的东西太多,没系统学习过注定在日后踩坑TAT

Links

1.Nginx直接反向代理后端:https://blog.youkuaiyun.com/qq_37105358/article/details/80854559
2.Flask直接走https:
https://blog.miguelgrinberg.com/post/running-your-flask-application-over-https
3.阮一峰的SSL/TSL协议概述:
https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html



转载自:https://www.jianshu.com/p/c564a775c217

### 关于若依前后端分离调试方法 对于若依(RuoYi)这一基于Spring Boot的前后端分离企业级快速开发框架,在进行调试时可以遵循一系列特定的方法来确保项目的正常运作和高效排查问题。 #### 后端调试技巧 在后端部分,主要采用的是Java语言以及Spring Boot框架。为了更好地调试后端服务,可以在IDE中设置断点并利用内置的日志记录功能。通过配置`application.yml`或`application.properties`文件中的日志级别,能够获取更多关于请求处理过程的信息[^1]。 ```yaml logging: level: com.ruoyi: debug ``` 上述代码展示了如何将指定包下的日志等级设为debug模式以便捕获更多的运行细节。 另外,当遇到复杂的业务逻辑或者性能瓶颈时,还可以借助JVM自带工具如jconsole、visualvm来进行监控分析;也可以引入专业的APM(Application Performance Management)产品像SkyWalking等用于追踪分布式系统的调用链路情况[^5]。 #### 前端调试指南 针对前端Vue.js应用,则更加侧重浏览器开发者工具的应用。Chrome DevTools提供了丰富的特性支持JavaScript脚本执行跟踪、网络请求查看等功能,这对于理解客户端行为至关重要。特别是在单页应用程序(SPA)场景下,可以通过Network面板观察API交互状况,并结合Elements选项卡审查DOM结构变化以定位样式显示异常等问题[^4]。 此外,Vuex作为状态管理模式可以帮助管理复杂的状态流转关系,而其插件devtools extension则允许实时监视store内部数据变动,极大地提高了开发效率与可维护性[^2]。 #### 问题解决方案 由于采用了前后端分离架构设计,不可避免会面临源资源共享(CORS,Cross-Origin Resource Sharing)挑战。解决办法之一是在Nginx反向代理层面上做文章——即让Web服务器充当中介角色转发来自不同域名下的资源访问请求给实际的服务提供者的同时附带必要的响应头信息告知浏览器允许该次通信发生[^3]。 ```nginx location /api { proxy_pass http://localhost:8080; add_header 'Access-Control-Allow-Origin' '*'; } ``` 这段配置示例表明了怎样修改Nginx配置使得任何来源都可以安全合法地发起对/api路径下资源的GET/POST等类型的HTTP请求而不受同源策略限制影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值