web-dev-qa-db-ja.com

asp.netで「Access-Control-Allow-Origin」ヘッダーを実装する方法

Asp.netに「Access-Control-Allow-Origin」ヘッダーを実装することは可能ですか

31
Nitin Sawant

enable-cors.org から:

ASP.NET上のCORS

IISを構成するアクセス権がない場合でも、ソースページに次の行を追加することにより、ASP.NETを介してヘッダーを追加できます。

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

参照:設定 IIS6 / IIS7

60
dtb

別のオプションは、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>

... こちら で見つけました

13
DanielV

1.インストールパッケージ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ヘッダーを追加します。

1
Westley

サーバーで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": "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を使用します

0
Elialber Lopes