ASP.NET解決跨域問題


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Filters;

namespace Project1.Application.Web.API
{
    public class CrossSiteAttribute: System.Web.Http.Filters.ActionFilterAttribute
    {
        //使用方法:
        /*
         在需要跨域的 action 增加[CrossSite]屬性

        例子:

        [CrossSite]
        [HttpPost]
        public HttpResponseMessage GetData()
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat(@" SELECT p.province as 'name',a.gaidu as 'value' FROM MapQueryDataBySheng a 
INNER JOIN t_Province p ON a.areaid=p.id");
            DataTable dt = SQLHelper.ExecDataTable(sb.ToString(), null);
            string strJson = DataTableToJsonWithJsonNet(dt);
            return new HttpResponseMessage { Content = new StringContent(strJson, Encoding.GetEncoding("UTF-8"), "application/json") };
        }
             */



        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 const string originHeaderdefault = "*";
        /// <summary>
        /// 該方法允許api支持跨域調用
        /// </summary>
        /// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 類的新實例。</param>
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext != null)
            {
                actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
            }
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM