📅  最后修改于: 2023-12-03 15:38:28.268000             🧑  作者: Mango
CORS(Cross-Origin Resource Sharing)是一种用于跨域访问的机制。在 Web API 中,默认情况下,所有在不同域中的请求都会被拒绝。因此,需要启用 CORS 策略来允许跨域请求。
在 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 包:
在 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
表示允许所有域名跨域访问。
在 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 策略的三种方法,开发者可根据自身需求选择适合的方式。