将请求从一个域的前端发送到另一个域的后端

问题描述 投票:0回答:1

我在托管上有网站(例如 https://example.com),并且我在此域上有一个页面,该页面向位于另一个域上的后端发出请求(例如 https://example- 2.com 位于 AWS EC2 上)。 这两个域都有 SSL 证书(我猜,都是来自 Let's Encrypt)。 由于某种原因,我收到了

Bad Request
错误。

在前端我得到

net::ERR_SSL_PROTOCOL_ERROR

在后端我看到以下内容:

72.2xx.87.250 - - [17/Oct/2024 04:46:07] code 400, message Bad request version ('L·/¬Æc¹B²\x03sCveÅú®\x186_½4\x1anù³»0\x10ÔF£¬ªJÍgÁD¶#1!\x8blVÅ\x1a\x16s|Å\x94Bæ\x0eç\x94\x9e') 72.2xx.87.250 - - [17/Oct/2024 04:46:07] "\x16\x03\x01\x06ø\x01\x00\x06ô\x03\x03\x9a"\x12d̦#\x92Ë\x82è\x0d\x964Khwöã6\x9azãê.\x13i¨Åuëí \x93í\x1aØd\x9f´pr:t\x84ZI\x164¨Rü\x85%9[¢ië\x9f\x97<\x18Á_\x00 jj\x13\x01\x13\x02\x13\x03À+À/...\x88=K§wÜw1RHÜ6ÅVüwchb\x8bkpª\x07uf̱8©\x92ó©k\x09L·/¬Æc¹B²\x03sCveÅú®\x186_½4\x1anù³»0\x10ÔF£¬ªJÍgÁD¶#1!\x8blVÅ\x1a\x16s|Å\x94Bæ\x0eç\x94\x9e" HTTPStatus.BAD_REQUEST - 72.2xx.87.250 - - [17/Oct/2024 04:46:07] code 400, message Bad request version ('*HYçs\x9dRGö¢ºÝ\x90o\x00â¿Ð') 72.2xx.87.250 - - [17/Oct/2024 04:46:07] "\x16\x03\x01\x06Ø\x01\x00\x06Ô\x03\x03®¹zb\x84\x1c\x92\x97º»Ü£ùn\x1a'\\\x1b¨Ù\x11x\x1c\x06\x1dyÓWÕ...Ñ\x9bÍ...

我知道问题可能出在加密上,但我不知道如何解决这个问题。 我正在为 Flask 使用 CORS。

我尝试提出请求

https -> http
https -> https
,但结果是一样的。

他们的托管上有 Phusion Passenger,我的 EC2 上有 Nginx。

我的正面看起来像

fetch('https://example-2.com:5000/pred', { 
                            method: 'POST',
                            headers: {
                                'Content-Type': 'application/json'
                            },
                            body: JSON.stringify({ file: base64Data })
                        })
                            .then(response => response.json())
                            .then(data => {
                                console.log('Response from server:', data);
                                loader.style.display = 'none';
                                predictionResult.style.display = 'flex';
                                predictionResult.innerHTML = 'The prediction is <br/><b>' + data['prediction'] + '</b>';
                                submitButton.disabled = false;
                            })
                            .catch(error => {
                                console.error('Error uploading file:', error);
                                submitButton.disabled = false;
                            });

我的背像

from flask import Flask, request, jsonify
import tensorflow as tf
from PIL import Image
import numpy as np
import base64
from flask_cors import cors

application = Flask(__name__)
CORS(application)

@application.route('/pred', methods=['POST'])
def handle_post_request():

...
    return jsonify({'prediction': prediction})


if __name__ == "__main__":
    application.run(host='0.0.0.0')

我无权控制前端所在的托管,但在我的 EC2 上我安装了 Ngnix,如下所述:https://ubuntu.com/tutorials/install-and-configure-nginx 然后使用 https://certbot.eff.org/instructions?ws=nginx&os=pip

获取 Let's Encrypt SSL

两个域均已加密。

UPD。我意识到我的 NginX 设置错误(我猜),但我无法修复此问题。 我以某种方式设置它,其他服务器可以发出状态为 200 的请求,但由于某种原因,客户端(浏览器)不能 - 它仍然有错误的请求。

ssl https ssl-certificate bad-request
1个回答
0
投票

我想通了!有必要识别 Nginx 配置文件中的标头;现在一切都很顺利!

© www.soinside.com 2019 - 2024. All rights reserved.