[ASP.NET Web API] JavaScript によるクロスドメインのアクセスを許可

ASP.NET Web API のサイトへ JavaScript からアクセスする場合、サーバー側の設定を行わないとクロスドメインでアクセスできません。

レスポンスに Access-Control-Allow-Origin ヘッダーを追加してクライアントからのアクセスを許可します。

AllowCrossSiteJsonAttribute クラスを新規に作成します。


Public Class AllowCrossSiteJsonAttribute
Inherits System.Web.Http.Filters.ActionFilterAttribute
Public Overrides Sub OnActionExecuted(actionExecutedContext As Http.Filters.HttpActionExecutedContext)
If actionExecutedContext.Request IsNot Nothing Then
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*")
End If
MyBase.OnActionExecuted(actionExecutedContext)
End Sub
End Class

ポイントは、System.Web.Http.Filters.ActionFilterAttribute を継承しているところです。ASP.NET Web API のプロジェクトで、単に ActionFilterAttribute と記載すると別の名前空間のものを参照してしまいます。

対象のコントローラーに AllowCrossSiteJson 属性を付ければ完了です(クラス単位でもメソッド単位でも OK)。


<AllowCrossSiteJson>
Public Function GetValue(ByVal id As Integer) As String
Return ""
End Function

(via json – Setting Access-Control-Allow-Origin in ASP.Net MVC – simplest possible method – Stack Overflow)

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク