gpt4 book ai didi

javascript - 400 响应 CORS 预检

转载 作者:行者123 更新时间:2023-12-04 17:12:08 28 4
gpt4 key购买 nike

我在 swagger.mydomain.com 上运行了 swagger (docker: swaggerapi/swagger-ui),并为在 a.mydomain.com 和 b.mydomain.com 上运行的 api 服务器定义了两个

a 和 b 都是 flask(python)服务器。由于在第四个子域上提供 Web 应用程序,a.mydomain.com 已经设置了一段时间的 CORS。这在该子域和 swagger 中都可以正常工作。现在我为 b.mydomain.com 做了同样的 CORS 设置,但是没有成功。

两台服务器上的设置如下所示:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app, origins=r"^.*(mydomain\.com)")

正如我所说,这适用于 a.mydomain.com,但不适用于 b.mydomain.com。

Preflight 看起来相同,除了 url、状态代码(分别为 200 和 400)以及工作请求有一个额外的 allow: POST, OPTIONS header 。我没有看到任何代码差异来证明这个额外的 header 是合理的。

失败的预检请求需要 150 毫秒,这是工作请求的两倍。

通过 swagger 执行请求提供了 curl 请求。在本地执行此操作会给出预期的输出,因此请求通常是正确的。

我不知道还能尝试什么。据我所知,a 和 b.mydomain.com 的设置完全相同。这里可能出了什么问题?

最佳答案

400 是一个非常不寻常的预检响应代码。这表明无论请求的 HTTP 方法是什么,端点都可以配置为期望请求中有特定的请求正文/有效负载或 header 。但是由于对于预检 OPTIONS 请求,浏览器没有发送请求主体,也没有额外的 header ,服务器代码没有收到它所期望的。

对于这种情况,解决方法是确保您有一个特定的、单独的处理程序来处理为该路由/端点配置的 OPTIONS 请求。

关于javascript - 400 响应 CORS 预检,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69227515/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com