关于跨域调用web Api、Web Service等的解决方案。
2015-01-09 16:47
253 查看
在日常开发中,经常需要调用到其它的网络服务。这里简单介绍下应用场景与实现
比如现在我有2个系统:
一、web项目系统 A
二、文件管理系统 B
在部署在2个系统时可能 A系统部署在 www.a.com 而B系统部署在
www.b.com
而A系统中很多模块,诸如:新闻管理,公司公告.......这些模块都需要上传图片或者资源什么的。
而当一个系统用户较多或比较庞大时,将A系统与B系统分开来开发,再进行分布式的部署是非常有必要的。
这个时候A系统则需要调用B系统公开的API和服务了
实例:假设用从A系统 Ajax发送一个Post请求B
$.Post(http://www.b.com,function(){ ....... });
这样是不会成功的,尽管www.b.com 不需要登录,因为这个时候涉及到跨域了。是没有办法去请求B的。
解决方案有2种:
1、通过B系统解决,B系统公开API或服务时应在response里输出相应的允许跨域的头文件,
具体为:
response.header("Access-Control-Allow-Origin", "*");
response.header("Access-Control-Allow-Headers", "X-Requested-With");
2、通过A系统解决,(另辟蹊径法)
具体为:首先在A系统本身加入一个API,在API中用HttpClient去请求网络上的API或服务。简单代码为:
string responseJson = new HttpClient().PostAsJsonAsync(http://www.b.com/Api/,
参数).Result.Content.ReadAsStringAsync().Result;
return responseJson;
而A系统始终请求A项目中的公开API来获取B项目中的数据,这样相当于经过后台执行了一次中转,A实际是调用的本域。
二种方案已通过验证,方法1好处是减少与自身服务器的通讯,方法2的好处就不多说了,意图很明显。本文结束
比如现在我有2个系统:
一、web项目系统 A
二、文件管理系统 B
在部署在2个系统时可能 A系统部署在 www.a.com 而B系统部署在
www.b.com
而A系统中很多模块,诸如:新闻管理,公司公告.......这些模块都需要上传图片或者资源什么的。
而当一个系统用户较多或比较庞大时,将A系统与B系统分开来开发,再进行分布式的部署是非常有必要的。
这个时候A系统则需要调用B系统公开的API和服务了
实例:假设用从A系统 Ajax发送一个Post请求B
$.Post(http://www.b.com,function(){ ....... });
这样是不会成功的,尽管www.b.com 不需要登录,因为这个时候涉及到跨域了。是没有办法去请求B的。
解决方案有2种:
1、通过B系统解决,B系统公开API或服务时应在response里输出相应的允许跨域的头文件,
具体为:
response.header("Access-Control-Allow-Origin", "*");
response.header("Access-Control-Allow-Headers", "X-Requested-With");
2、通过A系统解决,(另辟蹊径法)
具体为:首先在A系统本身加入一个API,在API中用HttpClient去请求网络上的API或服务。简单代码为:
string responseJson = new HttpClient().PostAsJsonAsync(http://www.b.com/Api/,
参数).Result.Content.ReadAsStringAsync().Result;
return responseJson;
而A系统始终请求A项目中的公开API来获取B项目中的数据,这样相当于经过后台执行了一次中转,A实际是调用的本域。
二种方案已通过验证,方法1好处是减少与自身服务器的通讯,方法2的好处就不多说了,意图很明显。本文结束
相关文章推荐
- 关于AJAX跨域调用web api问题汇总(二)
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于AJAX跨域调用web api问题汇总(一)
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于在ASP.NET应用程序中异步调用Web Service的解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于在ASP.NET应用程序中异步调用Web Service的解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
- 关于C#下写的Web Service 服务在Delphi下调用时的问题
- 关于JS的跨域通信的几种解决方案
- 关于跨域调用的相关知识
- 关于JS的跨域通信的几种解决方案【转】
- .net调用web Service时集合序列化的解决方案
- jquery跨域调用asp.net web service