[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
