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 |