gpt4 book ai didi

javascript - 访问控制允许方法似乎不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:56 26 4
gpt4 key购买 nike

我在 Web 服务器上安装了一个小型 Web API 应用程序,其中一个 GET 方法返回 3 条记录,一个 POST 方法接受一个对象,然后为其分配一个 ID 并返回相同的对象。

我正在从本地网络应用程序进行 ajax 调用,并测试我的 CORS 实现。到目前为止,几乎一切都运行良好。如果我不指定 Access-Control-Allow-Origin(现在只设置为 *),我的调用将被禁止(如我所料),但我也尝试指定 Access-Control-Allow - 方法,我的输入似乎没有限制进行特定调用。

例如,这是我的 web.config 包含的内容:

<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Authorization, Accept, X-Requested-With " />
<add name="Access-Control-Allow-Methods" value="OPTIONS, GET" />
</customHeaders>
</httpProtocol>

我只列出了 OPTIONSGET,但我仍然可以发出 POST 请求。同样,如果我将它设置为 "OPTIONS, POST",我仍然可以发出 GET 请求。

编辑

根据下面@geekonaut 的回答,我能够按预期看到此功能。我尝试尝试 PUT 请求,而不是 GETPOST,但随后出现错误,OPTIONS 不允许(预检)请求。我首先需要在我的 Global.asax.cs 文件中添加一个部分来接受该方法,然后如果我在我的 web.config 的 中切换添加/删除 PUT Access-Control-Allow-Methods 值,我看到它只允许列出该方法。

protected void Application_OnBeginRequest()
{
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.StatusCode = 200;
HttpContext.Current.Response.End();
}
}

最佳答案

CORS 不会阻止基于其方法的简单(甚至预检)POST 请求。

例如,Access-Control-Allow-Methods 仅对无法通过简单的跨源表单发出的请求有效。

这意味着:GETPOST 可以跳过Access-Control-Allow-Methods,如the spec 中所述。 :

Simple cross-origin requests generated outside this specification (such as cross-origin form submissions using GET or POST or cross-origin GET requests resulting from script elements) typically include user credentials, so resources conforming to this specification must always be prepared to expect simple cross-origin requests with credentials.

Because of this, resources for which simple requests have significance other than retrieval must protect themselves from Cross-Site Request Forgery (CSRF) by requiring the inclusion of an unguessable token in the explicitly provided content of the request.

(强调我的)

关于javascript - 访问控制允许方法似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705306/

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