关于跨域调用web Api、Web Service等的解决方案。
来源:互联网 发布:数据分析属于it么 编辑:程序博客网 时间:2024/06/06 01:11
在日常开发中,经常需要调用到其它的网络服务。这里简单介绍下应用场景与实现
比如现在我有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");
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;
参数).Result.Content.ReadAsStringAsync().Result;
return responseJson;
而A系统始终请求A项目中的公开API来获取B项目中的数据,这样相当于经过后台执行了一次中转,A实际是调用的本域。
二种方案已通过验证,方法1好处是减少与自身服务器的通讯,方法2的好处就不多说了,意图很明显。本文结束
0 0
- 关于跨域调用web Api、Web Service等的解决方案。
- 关于在ASP.NET应用程序中异步调用Web Service的解决方案
- .net 调用web Service时集合序列化的解决方案
- XML Web Service并发异步调用的问题及其解决方案
- 调用Google API 的Java实现(Web service)
- 调用Google API 的Java实现(Web service)
- 通过 Web Service 调用Pentaho BI 的API
- Web Service调用轻量级安全解决方案
- 纯SOAP动态调用Web Service API
- 关于java调用SharePoint 自带的Web Service
- Web Service 的异步调用
- 关于web service 的问题
- web service与web api
- 简单web api跨域调用案例
- Web Service 第六课之 调用Web Service的本质
- Odoo Web Service API
- Silerlight调用WCF、Web Service、Wcf Ria Service跨域的问题
- 动态调用Web Service
- ListView添加删除FooterView
- Sqlite数据库sqlite3命令
- 梯度下降法迭代结束的条件
- 对荣格的评价
- OC学习笔记-内存管理、retain、release和retainCount
- 关于跨域调用web Api、Web Service等的解决方案。
- json_lib 和jackson 案列
- 完成端口列子
- sqlite3常用命令&语法
- Android模仿打字机效果的自定义View实现
- java基础多线程的介绍
- 实用小程序记录1-计算地球两点之间的距离
- Java中数组的遍历
- SQLite 创建、修改、删除表