如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问

由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题。

刚开始没做任何处理,用jsonp的方式调用 web api 接口,总是报一个错误,如下:

如果你想用JSONP来获得跨域的数据,WebAPI本身是不支持javascript的callback的,它返回的JSON是这样的:

 然而,JSONP请求期望得到这样的JSON:

所以我们需要对WebAPI做拓展,让它支持这样的callback

解决方案如下:

只需要给全局注册一个JsonCallbackAttribute,就可以判断接口的访问是属于跨域,还是非跨域,正常的返回。

因为我们的接口,可能是用来给 移动端(Android 、IOS)做数据接口,也有可能是给网站用,所以,考虑到可能存在跨域的问题。

结合下面图片不难开出,请求的地址带回了,callback的参数标识。

 测试代码如下:

返回接口如下:

相关文章推荐:http://diaosbook.com/Post/2013/12/27/tips-for-aspnet-webapi-cors

from:https://www.cnblogs.com/Kummy/p/3767269.html