zoukankan      html  css  js  c++  java
  • cors实现跨域(.net和jquery)

    本文引用自:http://blog.csdn.net/xuwei_xuwei/article/details/29845865

    客户端

    一个jquery cors请求例子:
    $.ajax({  
                type: 'post',  
                crossDomain: true,  
                url: 'http://your.url.com/admin/login',  
                data: {  
                    UserName: $('#name:text', this.el).val(),  
                    PassWord: $('#Password:password', this.el).val()  
                },  
                dataType:'json',  
                xhrFields: {  
                    'Access-Control-Allow-Origin': '*'
                },  
                success: function(data, textStatus, jqXHR){  
                    console.log("getAllResponseHeaders:"+jqXHR.getAllResponseHeaders());  
                    console.dir(jqXHR);  
                    Backbone.history.navigate("#booklist",true);  
                }  
            });  

    服务端

    .net后端实现cors有3种方法

    1.服务端配置(iis7为例)

    在项目的web.config文件中添加下面的代码即可
    //全局配置
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <system.webServer>
       <httpProtocol>
         <customHeaders>
           <add name="Access-Control-Allow-Origin" value="*" />
         </customHeaders>
       </httpProtocol>
     </system.webServer>
    </configuration>

    2.asp.net 中,在每次对客户端的响应时,添加如下代码即可

    Response.AppendHeader("Access-Control-Allow-Origin", "*");

    3.ASP.NET Web API中,要做如下配置

    ASP.NET Web API 2 支持 CORS,要支持cors,请先用vs自带的nuget安装 Microsoft.AspNet.WebApi.Cors包
    然后在mvc项目中添加如下代码
    目录 App_Start 文件 WebApiConfig
    public static void Register(HttpConfiguration config)
    {
        // 其他配置,
    //下面是全局配置
    //var cors = new EnableCorsAttribute("www.example.com", "*", "*");
    //config.EnableCors(cors);
        config.EnableCors();
    }
    在对用的apicontrol通过特性声明对应的origin,headers,methods
    //类级别设置
    [EnableCors(origins: "http://example.com", headers: "*", methods: "*")]
    public class TestController : ApiController
    {
        // Controller methods not shown...
    }
    //方法级别设置
    public class ItemsController : ApiController
    {
        public HttpResponseMessage GetAll() { ... }


        [EnableCors(origins: "http://www.example.com", headers: "*", methods: "*")]
        public HttpResponseMessage GetItem(int id) { ... }


        public HttpResponseMessage Post() { ... }
        public HttpResponseMessage PutItem(int id) { ... }
    }
    ok,.net服务端的配置上述3中任选一种即可
    其他服务器和语言关于cors的配置请参考下面地址:http://enable-cors.org/server.html
    如图:


    原文地址:http://enable-cors.org/server_iis7.html
                        http://enable-cors.org/server_aspnet.html
                        http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

  • 相关阅读:
    Thinking in Java Reading Note(9.接口)
    Thinking in java Reading Note(8.多态)
    Thinking in Java Reading Note(7.复用类)
    SQL必知必会
    Thinking in Java Reading Note(5.初始化与清理)
    Thinking in Java Reading Note(2.一切都是对象)
    鸟哥的Linux私房菜笔记(1.基础)
    Thinking in Java Reading Note(1.对象导论)
    CoreJava2 Reading Note(2:I/O)
    CoreJava2 Reading Note(1:Stream)
  • 原文地址:https://www.cnblogs.com/huangzebin/p/6515198.html
Copyright © 2011-2022 走看看