是否可以在asp.net
中实现“Access-Control-Allow-Origin”标头答案 0 :(得分:60)
ASP.NET上的CORS
如果您无权配置IIS,则仍可以通过在源页面中添加以下行来添加标头:
Response.AppendHeader("Access-Control-Allow-Origin", "*");
答案 1 :(得分:13)
另一种选择是直接在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>
... 我在here
中找到了这个答案 2 :(得分: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 }
);
}
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 "";
}
}
答案 3 :(得分:1)
您需要一个查看所请求资源的HTTP模块,如果它是css或js,它将使用请求者URL粘贴Access-Control-Allow-Origin标头,除非您希望它与&一起打开#39 *&#39;
答案 4 :(得分:0)
在服务器上配置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