__ .AllowAnyOri-6ren">
gpt4 book ai didi

c# - 无论构建器的 WithMethods(..) 中的规范如何,似乎都允许 GET 和 POST

转载 作者:行者123 更新时间:2023-12-05 01:38:39 24 4
gpt4 key购买 nike

在我的 StartUp.cs 中,我有以下 CORS 设置。

services.AddCors(_ => _.AddPolicy("LocalDev", __ => __
.AllowAnyOrigin()
.AllowAnyHeader()
.WithMethods("GET", "POST", "PUT", "DELETE")
));

它按预期工作。但是,我注意到删除 GETPOST 似乎不会影响功能。不过,删除 PUTDELETE 是有效的。我对此感到困惑。

难道获取和发布的方法享有特殊地位,而其他方法则需要明确提供?我没有在 MSDN for the method 中找到任何相关引用资料.

最佳答案

.WithMethods 仅在触发 CORS 预检 OPTIONS 请求时才影响 GET/POST 请求——基本上,任何包含自定义请求 header 的 GETPOST。如果 GETPOST 包含任何自定义请求 header ,则它不会触发 CORS 预检 OPTIONS 请求,因此无论 .WithMethods 设置是什么,它都将被允许。

在 CORS 协议(protocol)术语中,.WithMethods 设置 Access-Control-Request-Headers header 值,浏览器仅查询响应 CORS 预检 OPTIONS 请求。

对于触发 CORS 预检的请求,需要条件的交集;即,请求必须具有正确的来源和正确的方法。但是对于触发 CORS 预检 OPTIONS 请求的请求,根据定义没有“正确”的方法——因为在那种情况下,任何 Access-Control-Allow-Method header 无关紧要并被忽略。或者更确切地说,从概念上讲,更清楚的是说有一个硬编码的“正确”方法列表:CORS-safelisted methods 的集合。 — GETHEADPOST — 在 Fetch 规范中定义。

关于c# - 无论构建器的 WithMethods(..) 中的规范如何,似乎都允许 GET 和 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438871/

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