首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决猎鹰飞行前请求错误

如何解决猎鹰飞行前请求错误
EN

Stack Overflow用户
提问于 2022-07-29 08:36:11
回答 1查看 116关注 0票数 -1

我使用falcon_cors v1.4.1falcon-cors v1.1.7来管理对后端API的访问,该API托管在我们公司的域中。前端角应用程序托管在不同的域中(在AWS中)。

我在后端有下面的CORS设置。

代码语言:javascript
运行
复制
import falcon
from falcon_cors import CORS

cors = CORS(allow_all_origins=True,
            allow_all_headers=True,
            allow_all_methods=True)
API = falcon.API(middleware=[cors.middleware])
API.add_route(CONFIG.ROOT_PATH + '/query/products', QueryProduct())
...

但是,当前端试图查询API https://mycompanydomain.com/query/products时,将返回一个CORS错误:

代码语言:javascript
运行
复制
Access to XMLHttpRequest at 'https://mycompanydomain.com/query/products' 
from origin 'https://mycompany.aws.com' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.

对于allow_all_origins=True,我假设所有来源的飞行前请求都会被允许。所以不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2022-07-31 17:07:23

我有后端API,它可以用GET访问,但由于飞行前的问题,不能成功地使用POST,这会导致CORS阻塞。

因此,在这个站点中,https://newbedev.com/http-request-from-angular-sent-as-options-instead-of-post#:~:text=HTTP%20request%20from%20Angular%20sent%20as%20OPTIONS%20instead,is%20allowed%20from%20a%20particular%20domain%20as%20follows%3A

我发现,您只是简单地使用OPTIONS方法,您的浏览器在“实际”调用之前调用该方法的后端。这叫做飞行前请求。

它使用OPTIONS方法,而不是get/post/put。因此,这可能会有所帮助。

如果使用:

代码语言:javascript
运行
复制
 if (req.method == "OPTIONS")
    {
        res.writeHead(200, {"Content-Type": "application/json"});
        res.end();
    }

对于PHP,我使用以下代码:

代码语言:javascript
运行
复制
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header("HTTP/1.1 200 ");
exit;
}

以下是PHP中的标题:

代码语言:javascript
运行
复制
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Max-Age: 3600");
header("HTTP/1.1 200");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Methods, Access-Control-Allow-Headers, Authorization, X-Requested-With, Origin");

注意标题中的OPTIONS方法。

就这样。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73163834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档