首页 新闻 搜索 专区 学院

如何通过js跨域调用ASP.NET Web API

0
悬赏园豆:30 [已解决问题] 解决于 2015-08-28 10:07

请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?

dudu的主页 dudu | 高人七级 | 园豆:37797
提问于:2015-08-26 10:36
< >
分享
最佳答案
0

客户端js无需任何专门设置,使用通常的ajax调用即可:

$.ajax({
    url: '跨域URL',
    type: 'get',
    dataType: 'json',
    success: function (data) {
        $('#banner_right').html(data);
    }
});

服务端需要在WebApiConfig.Register()中添加如下的代码

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute("http://www.cnblogs.com,http://news.cnblogs.com", "*", "*");
        config.EnableCors(cors);            
    }
}

注1:"http://www.cnblogs.com,http://news.cnblogs.com"表示允许这2个域名可以跨域调用这个Web API。

注2:需要nuget安装Microsoft.AspNet.Cors

dudu | 高人七级 |园豆:37797 | 2015-08-28 10:06
其他回答(5)
0

http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-05.html

收获园豆:10
吴瑞祥 | 园豆:28937 (高人七级) | 2015-08-26 11:11
0

“NO,you can't”,这个是最简单的问题。

但是也不是没有变通的方式,通过代理服务器原理,将你的请求通过代理服务器(可以是任意域名,可以跨域)去访问,代理服务器处理这个请求,并且“在响应的标头中加上Access-Control-Allow-Origin:*”,最后输出内容给客户端。你可以自己实现简单的代理。googling了下,CORS

http://stackoverflow.com/questions/10636611/how-does-access-control-allow-origin-header-work

https://remysharp.com/2011/04/21/getting-cors-working

收获园豆:10
拉风的拉灯 | 园豆:585 (小虾三级) | 2015-08-26 11:22
0

这,http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

https://msdn.microsoft.com/en-us/magazine/dn532203.aspx

太多了点吧。。。

收获园豆:10
幻天芒 | 园豆:36662 (高人七级) | 2015-08-26 12:26
0

jsonp

李哈文 | 园豆:242 (菜鸟二级) | 2015-08-26 16:09
0

dudu大人提问,不都应该是高分吗?哈哈,自己印钱.

 

jsonp,貌似百度搜索的搜索提示,就是这样搞的.

jQuery110207612842570524663_1440600764863({
    "q": "jsonp",
    "p": false,
    "bs": "",
    "csor": "5",
    "g": [{
        "q": "json",
        "t": "n",
        "st": {
            "q": "json",
            "new": 0
        }
    },
    {
        "q": "jsonp 跨域",
        "t": "n",
        "st": {
            "q": "jsonp 跨域",
            "new": 0
        }
    },
    {
        "q": "jsonp post",
        "t": "n",
        "st": {
            "q": "jsonp post",
            "new": 0
        }
    },
    {
        "q": "jsonp callback",
        "t": "n",
        "st": {
            "q": "jsonp callback",
            "new": 0
        }
    },
    {
        "q": "jsonparser",
        "t": "n",
        "st": {
            "q": "jsonparser",
            "new": 0
        }
    },
    {
        "q": "jsonpath",
        "t": "n",
        "st": {
            "q": "jsonpath",
            "new": 0
        }
    },
    {
        "q": "jquery jsonp",
        "t": "n",
        "st": {
            "q": "jquery jsonp",
            "new": 0
        }
    },
    {
        "q": "jsonp jquery",
        "t": "n",
        "st": {
            "q": "jsonp jquery",
            "new": 0
        }
    },
    {
        "q": "jsonp 格式",
        "t": "n",
        "st": {
            "q": "jsonp 格式",
            "new": 0
        }
    },
    {
        "q": "jsonp原理",
        "t": "n",
        "st": {
            "q": "jsonp原理",
            "new": 0
        }
    }],
    "s": ["json", "jsonp 跨域", "jsonp post", "jsonp callback", "jsonparser", "jsonpath", "jquery jsonp", "jsonp jquery", "jsonp 格式", "jsonp原理"]
});
SmallDong | 园豆:75 (初学一级) | 2015-08-26 22:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册