[英]Authenticate Dynamics CRM 2016 Rest Webservice from external system
尝试从外部HTML页面调用Dynamics WS时遇到了CORS
问题。
我研究了如何在服务器上启用CORS
,并通过在CRM网站的web.config
中添加了以下几行来实现。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
这似乎解决了CORS
问题,但随后引发了一个新错误,该错误指出:
验证失败
我使用REST Builder工具生成javascript代码。 但是,我不确定如何验证呼叫。
我使用的代码如下:
var entity = {};
entity.new_name = "John Smith";
entity.new_guid = "KHU464KOU3";
var req = new XMLHttpRequest();
req.open("POST", "http://crmsitedomain.com/api/data/v8.2/new_consumer", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 204) {
alert("Created");
} else {
alert(this.status); // is returning "0"
}
}
};
req.send(JSON.stringify(entity));
我在工具中确实看到了“令牌头”和“模拟”选项,但是我在哪里可以得到这些参数的值?
首先,我将撤消对CRM网站web.config
更改,这并不是要更改应用程序文件,这实际上不受支持,并且不太可能解决您的问题。
MSDN描述了如何使用Web API成功地对Microsoft Dynamics 365进行身份验证 。
要在此处复制它有点漫长,所以请检查链接。
对于Microsoft Dynamics 365(在线)或面向Internet的部署,当您将Web API用于Dynamics 365(在线)或本地面向Internet的部署(IFD)时,必须按照使用以下方法连接到Microsoft Dynamics 365 Web服务中所述使用OAuth: OAuth 。
如果要使用JavaScript创建单页应用程序(SPA),则可以使用adal.js库,如将OAuth与跨域资源共享配合使用中所述, 将单页应用程序连接到Microsoft Dynamics 365 。
您看到此 MSDN页面了吗? 这是针对Web API而非WS的,但几乎相同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.