ASP.NET Web API のサイトへ JavaScript からアクセスする場合、サーバー側の設定を行わないとクロスドメインでアクセスできません。
レスポンスに Access-Control-Allow-Origin ヘッダーを追加してクライアントからのアクセスを許可します。
AllowCrossSiteJsonAttribute クラスを新規に作成します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<AllowCrossSiteJson> | |
Public Function GetValue(ByVal id As Integer) As String | |
Return "" | |
End Function |