如何实施“;访问控制允许起源”;asp.net中的头
本文关键字:asp net 起源 何实施 访问控制 许起源 | 更新日期: 2023-09-27 18:00:34
是否可以在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中:
<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>
我在这里找到了这个
1.Install-PackageMicrosoft.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控制器(HomeController.cs)中添加此代码
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class HomeController : ApiController
{
[HttpGet]
[Route("api/Home/test")]
public string test()
{
return "";
}
}
您需要一个HTTP模块来查看请求的资源,如果它是css或js,它会在Access Control Allow Origin标头上添加请求者URL,除非您希望它用"*"完全打开。
在服务器上配置CORS响应头并不是一个真正的选项。您应该在客户端配置一个代理。
示例到Angular-因此,我创建了一个proxy.conf.json文件作为代理服务器。下面是我的proxy.conf.json文件:
{
"/api": {
"target": "http://localhost:49389",
"secure": true,
"pathRewrite": {
"^/api": "/api"
},
"changeOrigin": true
}
}
将文件放在package.json的同一目录中,然后我修改了package.jsn文件中的启动命令,如下所示
"start": "ng serve --proxy-config proxy.conf.json"
现在,来自应用程序组件的http调用如下:
return this.http.get('/api/customers').map((res: Response) => res.json());
最后要运行,请使用npm-start或ng-serve-proxy-config-proxy.conf.json