MS CRM - 使用ajax consume第三方的web service的问题

之前的工作中涉及到了一个问题,要利用MS crm的web resource去调用一个第三方的web api, 实现过程中遇到了一个问题: 

没用办法使用ajax去跨越domain, 也就是cross-domain restrictions。

做了一些调查后发现常用的方法有三种:

1. 使用jsonp 而不是使用json format

jsonp 也就是 json with padding, 把ajax message的datatype改为jsonp就可以最简单的调用。

更多的细节参考这个链接

http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html

使用jsonp后, 我的web resource 也无法成功调用第三方的web api. 可能是web api并不支持jsonp格式的request.


2. 在api 服务端添加cors

cors 也就是 cross origin resource sharing. 在web api可以通过添加cors 允许一些 cross orign request.

enable cors in webb api参考下面的链接

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

这个解决方案相比JSONP更加的安全也更加的可控, 但是悲剧的是这些第三方的API有一些是我们自己hold, 于是我们可以很方便的添加cors. 但是另外有一些api需要和对方沟通,于是对于这些api, 只能采用第三个方案。


3.放弃ajax,使用server side code.

在server side code 调用api是没有cross domain block的, 对于CRM来说, server side code的方案包括:

a. 用CRM SDK提供的DLL创建一个asp.net的web application.

b. 使用plugin。

C. 使用custom workflow


所以最终的解决方案是第二混合第三,当然,当你使用ajax去调用CRM的restful service或者rest api是不会遇到这个问题的。只用第三方的api你才需要考虑这些方案。


后记: 最近公司要重构整个CRM的架构,所以比较忙,忙完这段要开始把自己学习CRM MVP们的博客的心得结合自己的工作经验开始更新。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值