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

时间:2011-06-29 06:33:13

标签: c# asp.net iis

是否可以在asp.net

中实现“Access-Control-Allow-Origin”标头

5 个答案:

答案 0 :(得分:60)

来自enable-cors.org

  

ASP.NET上的CORS

     

如果您无权配置IIS,则仍可以通过在源页面中添加以下行来添加标头:

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

另请参阅:配置IIS6 / IIS7

答案 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