通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名

  Access-Control-Allow-Origin响应头可以允许哪些域名能发送ajax请求本页面,Access-Control-Allow-Origin响应头一次只能设置一个域名,如果要控制只允许指定的多个域名能跨域请求页面,要如何设置Access-Control-Allow-Origin响应头

 

解决办法

  建立一个允许跨域请求的域名列表,然获取请求来源域名,和列表进行对比,如果来源域名存在允许的跨域请求域名列表里面,再添加Access-Control-Allow-Origin响应头

 

下面为一个C# ashx的示例

    public void ProcessRequest(HttpContext context)
    {
        System.Collections.Generic.List<string> lHost = new System.Collections.Generic.List<string>();
        #region 添加允许跨域请求的域名列表
        lHost.Add("xxx.com");
        lHost.Add("www.xxx.com");
        lHost.Add("www.abc.com");
        lHost.Add("abc.com");
        #endregion
        string host = context.Request.UrlReferrer == null ? "" : context.Request.UrlReferrer.Host;//获取从哪个域名发送的ajax请求本页面或者是直接访问
        if (lHost.Contains(host))
        { //在允许的域名列表里面才添加Access-Control-Allow-Origin响应头
            context.Response.AddHeader("Access-Control-Allow-Origin", "http://" + host);
        }
        context.Response.Write(DateTime.Now.ToString());
    }

 


原创文章,转载请注明出处:通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名
评论(0)Web开发网
阅读(10370)喜欢(0)不喜欢(0)JavaScript/Ajax