關於ASP.NET MVC WebApi介面跨域訪問的解決方案
{
public static void Register(HttpConfiguration config)
{
//跨域配置
config.EnableCors(new EnableCorsAttribute("*", "*", "*")); // Web API 路由
config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}4.這個在程式碼裡面寫死的配置不利於安全,最好使用配置進行處理
public class CrossSiteAttribute: System.Web.Http.Filters.ActionFilterAttribute
{
private const string Origin = "Origin";
/// <summary>
/// Access-Control-Allow-Origin是HTML5中定義的一種伺服器端返回Response header,用來解決資源(比如字型)的跨域許可權問題。
/// </summary>
private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
/// <summary>
/// originHeaderdefault的值可以使 URL 或 *,如果是 URL 則只會允許來自該 URL 的請求,* 則允許任何域的請求
/// </summary>
private string originHeaderdefault = "*";//"http://192.168.13.7:8002";
/// <summary>
/// 該方法允許api支援跨域呼叫
/// </summary>
/// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 類的新例項。</param>
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
}
}
2.在WebApi介面內需要引用該檔案
[CrossSite] --是建立的類
public class WebApiController : ApiController
{
}
3.當前介面內就可以跨域訪問了