如何在asp.net中实现"Access-Control-Allow-Origin"标头

Nit*_*ant 33 c# asp.net iis

是否可以在asp.net中实现"Access-Control-Allow-Origin"标头

dtb*_*dtb 61

来自enable-cors.org:

ASP.NET上的CORS

如果您无权配置IIS,则仍可以通过将以下行添加到源页面来通过ASP.NET添加标头:

Response.AppendHeader("Access-Control-Allow-Origin", "*");
Run Code Online (Sandbox Code Playgroud)

另请参阅:配置IIS6/IIS7


Dan*_*elV 15

另一种选择是直接在web.config上添加它:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="http://www.yourSite.com" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
      </customHeaders>
    </httpProtocol>
Run Code Online (Sandbox Code Playgroud)

......我在这里发现了这个

  • 将值设置为 URL 而不是 * 不适用于 json 调用,是否有原因? (2认同)

Pra*_*rma 6

1.Install-Package Microsoft.AspNet.WebApi.Cors

2.在WebApiConfig.cs中添加此代码.

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services

    // Web API routes

    config.EnableCors();

    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}
Run Code Online (Sandbox Code Playgroud)

3.加上这个

using System.Web.Http.Cors; 
Run Code Online (Sandbox Code Playgroud)

4.在Api Controller(HomeController.cs)中添加此代码

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class HomeController : ApiController
{
    [HttpGet]
    [Route("api/Home/test")]
    public string test()
    {
       return "";
    }
}
Run Code Online (Sandbox Code Playgroud)