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

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

来自enable-cors.org :

ASP.NET上的CORS

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

Response.AppendHeader("Access-Control-Allow-Origin", "*"); 

另请参阅:配置IIS6 / IIS7

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

         

……我在这里发现了这个

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 } ); } 

3.加上这个

 using System.Web.Http.Cors; 

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

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

您需要一个查看所请求资源的HTTP模块,如果它是css或js,它将使用请求者URL在Access-Control-Allow-Origin标头上添加,除非您希望它与’*’一起打开。

在服务器上配置CORS响应头并不是一个真正的选择。 您应该在客户端配置代理。

示例到Angular – 所以,我创建了一个proxy.conf.json文件作为代理服务器。 下面是我的proxy.conf.json文件:

 { "/api": { "target": "http://localhost:49389", "secure": true, "pathRewrite": { "^/api": "/api" }, "changeOrigin": true } } 

将文件放在package.json所在的目录中,然后我修改了package.json文件中的start命令,如下所示

 "start": "ng serve --proxy-config proxy.conf.json" 

现在,来自app组件的http调用如下:

 return this.http.get('/api/customers').map((res: Response) => res.json()); 

最后运行使用npm startng serve –proxy-config proxy.conf.json