如何在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 start或ng serve –proxy-config proxy.conf.json