gpt4 book ai didi

asp.net-web-api - 通过 Web.config 与 WebApiConfig 和 Controller 属性启用 CORS

转载 作者:行者123 更新时间:2023-12-02 11:22:29 26 4
gpt4 key购买 nike

在 Web API 2 中似乎有两种功能不同的方式来启用跨源请求共享。

一种是导入System.Web.Http.Cors,使用EnableCors属性装饰 Controller 并编写config WebApiConfig 中的 .EnableCors():

[EnableCors(origins: "http://111.111.111.111", headers: "*", methods: "*")]
public class GenericController : ApiController
{
// etc.

另一个是修改Web.config:

<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://111.111.111.111" />
<add name="Access-Control-Allow-Methods" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />

这两种不同的方法之间有功能差异吗?哪一个是正确的——这些不是完成同样的事情吗?如果这两种方法都启用CORS,会不会搞砸?

最佳答案

如果您将 header 添加到 web.config,则该应用程序提供的每个请求都将包含指定的 header 。此方法在 Web 服务器级别受支持,并且不依赖于 config.EnableCors() 的执行。您可以使用该方法添加所需的任何 HTTP header 。

另一方面,EnableCors 属性需要 WebAPI,您需要添加一些代码才能使其工作。对于最终用户来说,结果是相同的。

至于哪种方式更好?我喜欢通过使用属性将这些设置保留在应用程序代码中,这样这些设置对于 future 的开发人员来说是显而易见的。根据您的需求,您可能需要研究一个抽象的 CorsApiController,您的主 ApiController 可以继承它来一遍又一遍地传递相同的 CORS header 。但是,如果 CORS header 需要因 Controller 或操作而异,则此方法将不起作用。

关于asp.net-web-api - 通过 Web.config 与 WebApiConfig 和 Controller 属性启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29970793/

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