📜  如何在 web api 中启用 cors 策略 (1)

📅  最后修改于: 2023-12-03 15:38:28.268000             🧑  作者: Mango

如何在 Web API 中启用 CORS 策略

CORS(Cross-Origin Resource Sharing)是一种用于跨域访问的机制。在 Web API 中,默认情况下,所有在不同域中的请求都会被拒绝。因此,需要启用 CORS 策略来允许跨域请求。

在 Web.config 文件中进行配置

在 Web.config 文件中添加以下配置来启用 CORS 策略:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      <add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

其中,

  • Access-Control-Allow-Origin 表示允许哪些域名访问,* 表示允许所有域名访问。
  • Access-Control-Allow-Methods 表示允许哪些请求方法访问。
  • Access-Control-Allow-Headers 表示允许哪些头部信息访问。
使用中间件进行配置

在 Web API 2 中,可以使用 Microsoft.Owin.Cors 中间件来启用 CORS 策略。使用中间件需要安装以下 NuGet 包:

  • Microsoft.Owin.Cors
  • Microsoft.Owin.Host.SystemWeb

在 Startup.cs 文件中,添加以下代码来启用中间件:

using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Owin;

[assembly: OwinStartup(typeof(MyWebApi.Startup))]
namespace MyWebApi
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
        }
    }
}

其中,CorsOptions.AllowAll 表示允许所有域名跨域访问。

使用 Attribute 进行配置

在 Web API 2 中,也可以使用 EnableCors Attribute 来启用 CORS 策略。在控制器类上或者方法上添加 EnableCors Attribute,即可启用 CORS 策略。

例如,在控制器类上添加以下代码:

using System.Web.Http;
using System.Web.Http.Cors;

namespace MyWebApi.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class MyController : ApiController
    {
        //...
    }
}

其中,

  • origins 表示允许哪些域名跨域访问,* 表示允许所有域名跨域访问。
  • headers 表示允许哪些头部信息跨域访问,* 表示允许所有头部信息跨域访问。
  • methods 表示允许哪些请求方法跨域访问,* 表示允许所有请求方法跨域访问。

以上是 Web API 中启用 CORS 策略的三种方法,开发者可根据自身需求选择适合的方式。