山东大学创新实训第十四周周报------前后端通信所遇到的问题

按照教程配置好服务器域名(需备案)以及ssl证书后发现网站仍然无法连接

尝试了多种方法仍然难以建立连接,于是与相关的同学交流尝试使用他们的方法,即在服务器与本机上进行flask通信,代码如下:

服务器:

import os
from flask import Flask, request, jsonify

from flask_cors import CORS
app = Flask(__name__)
CORS(app)  # 允许跨域请求

app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)


@app.route('/get_string', methods=['GET'])
def get_string():
    return jsonify({'message': 'Hello, this is a string from the backend!'})

if __name__ == '__main__':

    app.run(debug=True, host='0.0.0.0', port=11937)

本机:

import os
from flask import Flask, request, jsonify
import requests
from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # 允许跨域请求

UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)

@app.route('/proxy_get_string', methods=['GET'])
def proxy_get_string():
    url = 'http://127.0.0.1:11937/get_string'  # 服务器上的Flask地址
    response = requests.get(url)
    if response.status_code != 200:
        return jsonify({'error': 'Error fetching string from remote server'}), 500

    return jsonify(response.json())

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)  # 本机的Flask代理服务

写一个html网页来响应:

<!DOCTYPE html>
<html>
<head>
    <title>Flask Proxy Example</title>
    <script>
        function fetchString() {
            fetch('http://localhost:8080/proxy_get_string')
                .then(response => response.json())
                .then(data => {
                    document.getElementById('output').innerText = data.message;
                })
                .catch(error => console.error('Error:', error));
        }

    </script>
</head>
<body>
    <h1>Flask Proxy Example</h1>
    <button onclick="fetchString()">Get String</button>
    <p id="output"></p>

</body>
</html>

得到的网页如图:

点击按钮,后台响应如下:

我们尝试调整了端口仍然无法解决(但很困惑别人的项目使用5000这个端口就可以)

于是我们询问服务器管理员,发现我们的大模型环境存在于一个docker内,而该docker只对外开放了一个端口(登录端口),并且修改端口或映射可能会扰乱服务器内的环境。

当然,如果你不存在这样的特殊的服务器情况的话,可以选择以下处理方式做一下映射就可以:

Docker部署Nginx+SSL,https访问失败_docker nginx 配置ssl完无法访问-CSDN博客

ssh -L 8443:localhost:8443 -p 20007 root@你的服务器
  • ssh: 这个命令用于通过安全外壳协议 (SSH) 连接到远程服务器。
  • -L 8443:localhost:8443: 这是端口转发选项,表示将本地主机的 8443 端口转发到远程服务器的 8443 端口。具体解释如下:
    • 8443: 本地计算机的端口。
    • localhost: 目标主机地址,在这个上下文中是指远程服务器自身。
    • 8443: 远程服务器的端口。
  • -p 20007: 指定用于连接到远程服务器的 SSH 端口号为 20007。默认情况下,SSH 使用端口 22,但在这里是使用了非标准端口 20007。
  • root@你的服务器: 这是用于连接到远程服务器的登录凭证,其中 root 是用户名,你的服务器 是远程服务器的主机名或 IP 地址。
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值