AWS 设置导致 Elastic Beanstalk 出现 CORS 错误
AWS setup resulting in CORS error with Elastic Beanstalk
我正在研究关于新闻推荐的论文,并且一直致力于在 AWS 上获取我的 Web 应用程序 运行。我的 angular front-end 在静态托管的 S3 上运行,我的 NodeJS back-end 和我的 Flask API 在 Elastic Beanstalk 上运行。我 运行 遇到的问题是,当我从 Node 向 Flask 甚至它自己发出请求时,我得到一个 CROS Missing Allow Origin。因此,我尝试添加这些 CORS headers,从 access-control-allow-origin 开始: * 使用 GET、PUT、PATCH、PUT、DELETE、OPTIONS 作为方法。我对 NodeJS 和 Flask 都做了这个,但错误仍然没有改变。该站点本身可通过 mlbias.com 访问,其中 NodeJS 位于 node.mlbias.com 子域上,Flask 位于 flask.mlbias.com 上(可以使用任何 non-sensical 用户名访问 'login')。直接访问 URL 确实有效,例如使用 node.mlbias.com/api/articles/headlines/ 和 flask.mlbias.com/test/ 并且它在本地主机上也可以正常工作。
这些图片显示了打开文章时提出的将其添加到用户历史记录的请求。这些图像来自同一个请求。
NodeJS 使用
app.use(express.json())
app.use((req, res, next) => {
res.setHeader(
"Access-Control-Allow-Origin",
"*"
);
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, PUT, DELETE, OPTIONS"
);
next();
});
Flask 使用
import nltk
import numpy as np
from flask import Flask, request
from flask_restful import Api, Resource
from flask_cors import CORS, cross_origin
from nltk.sentiment import SentimentIntensityAnalyzer
from nltk.tokenize import word_tokenize
from sentence_transformers import SentenceTransformer
application = Flask(__name__)
CORS(application)
api = Api(application)
我想了解究竟是什么原因造成的,以及我该如何解决。感谢您的帮助
进一步调试后,发现其实不是CORS错误,而是服务器超时。这是由连接到数据库时发生的错误引起的,调试代码没有发现应该打印的连接详细信息的一部分实际上没有在服务器上正确配置导致数据库连接失败以及应该记录此类问题的调试代码。幸运的是只用了一个半星期就找到了问题:(
我正在研究关于新闻推荐的论文,并且一直致力于在 AWS 上获取我的 Web 应用程序 运行。我的 angular front-end 在静态托管的 S3 上运行,我的 NodeJS back-end 和我的 Flask API 在 Elastic Beanstalk 上运行。我 运行 遇到的问题是,当我从 Node 向 Flask 甚至它自己发出请求时,我得到一个 CROS Missing Allow Origin。因此,我尝试添加这些 CORS headers,从 access-control-allow-origin 开始: * 使用 GET、PUT、PATCH、PUT、DELETE、OPTIONS 作为方法。我对 NodeJS 和 Flask 都做了这个,但错误仍然没有改变。该站点本身可通过 mlbias.com 访问,其中 NodeJS 位于 node.mlbias.com 子域上,Flask 位于 flask.mlbias.com 上(可以使用任何 non-sensical 用户名访问 'login')。直接访问 URL 确实有效,例如使用 node.mlbias.com/api/articles/headlines/ 和 flask.mlbias.com/test/ 并且它在本地主机上也可以正常工作。
这些图片显示了打开文章时提出的将其添加到用户历史记录的请求。这些图像来自同一个请求。
NodeJS 使用
app.use(express.json())
app.use((req, res, next) => {
res.setHeader(
"Access-Control-Allow-Origin",
"*"
);
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, PUT, DELETE, OPTIONS"
);
next();
});
Flask 使用
import nltk
import numpy as np
from flask import Flask, request
from flask_restful import Api, Resource
from flask_cors import CORS, cross_origin
from nltk.sentiment import SentimentIntensityAnalyzer
from nltk.tokenize import word_tokenize
from sentence_transformers import SentenceTransformer
application = Flask(__name__)
CORS(application)
api = Api(application)
我想了解究竟是什么原因造成的,以及我该如何解决。感谢您的帮助
进一步调试后,发现其实不是CORS错误,而是服务器超时。这是由连接到数据库时发生的错误引起的,调试代码没有发现应该打印的连接详细信息的一部分实际上没有在服务器上正确配置导致数据库连接失败以及应该记录此类问题的调试代码。幸运的是只用了一个半星期就找到了问题:(