关于前后端交互,在Nginx配置ssl的情况下,后端接口运行在http上,而非https上的问题的彻底解决心得!

        前两天服务器刚刚备案完成,我就迫不及待的将服务器所需要的服务安装好,然后将自己建好的网站部署到Nginx服务器上,众嗦粥汁,网站部署完成后,还剩最后一步就是配置nginx.conf文件的SSL,配置好之后就可以通过https这个协议去访问自己的网站了。
        当上述都弄好了之后,我是用python语言写的后端程序的接口,用来进行数据库的增、删、改、查;在增、删、改这三个功能之前我先把查询数据库的功能给写好了,便于用于测试。当我写好这个查询功能后,前端那边用的是fetchAPI:

fetch('http://xxxxxx.xx',{
    methods:'GET'
})
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP 错误!状态码: ${response.status}`);
    }
    return response.json();
  })
  .then(data => {
    console.log(data);
   })
});

 在后端这边用的框架式flask框架:

import socket
from flask import Flask,jsonify
import pymysql


conn = pymysql.connect( 
    host=替换成你的数据库的远程地址,
    user=替换成你的数据库的用户名,
    password=替换成你的数据库的密码,
    port=替换成你的数据库的端口号,
    db=替换成你的数据库的名字
 )

app = Flask(__name__)

cursor=conn.cursor()

@app.route('/data',methods=['GET'])
def data():
    cursor.execute("SELECT 替换成你的数据库名字或者通配符 FROM 替换成你的数据库的表名")
    data_tuples = cursor.fetchall()

    # 返回JSON格式的数据列表
    return jsonify(response)

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000,debug=True)
    
# db.close()


        当一切准备就绪后我就迫不及待打开网站进行请求测试,就在这时,出现意外了:
404 Not Found:资源未找到(原本的错误提示是https向http发送一个不安全的请求......)
        当时挺傻眼的,我当时在前端的请求链接直接改成https就是报错404,然后不断地查资料,然后问到一个前端大佬,他告诉我说是跨协议了要我去做nginx代理,他让我直接把nginx配置文件给他,他给我改完后发过来,我替换掉后,重新启动了一下nginx服务,再次试的时候还是这种错误......就挺无语的。然后在网上找nginx反向代理的还有这个路由的代理都做了一个遍还是不行,真的挺难受.....也找过vscode插件通灵义码这个ai了,也没有太大的作用。
        可能是提问的不对,后来那个大佬告诉我xxxx没有给配置域名证书,然后我灵机一动,去浏览器的chatGPT插件问了一下:怎么给python后端flask框架配置ssl
        于是就有了下边的代码:
 

import socket
from flask import Flask,jsonify
import pymysql


conn = pymysql.connect( 
    host=替换成你的数据库的远程地址,
    user=替换成你的数据库的用户名,
    password=替换成你的数据库的密码,
    port=替换成你的数据库的端口号,
    db=替换成你的数据库的名字
 )

app = Flask(__name__)

cursor=conn.cursor()

@app.route('/data',methods=['GET'])
def data():
    cursor.execute("SELECT 替换成你的数据库名字或者通配符 FROM 替换成你的数据库的表名")
    data_tuples = cursor.fetchall()

    # 返回JSON格式的数据列表
    return jsonify(response)

# context = (替换成你的ssl域名证书文件的路径,替换成你的ssl域名证书的秘钥文件的路径)
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000,ssl_context=context,debug=True)
    
# db.close()

 然后就把折麼我的一个问题解决了,运行python试了一下,请求链接已经是https了!!!
有需要的小伙伴可以直接拷贝走代码了!


下次我们聊聊这个前端返回的为什么是一个二维数组,而不是一个包含数据库列名的JSON文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值