尝试从外部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));
我确实看到了#34;令牌标题&#34;和&#34;冒充&#34;工具中的选项,但我从哪里获取这些参数的值?
答案 0 :(得分:4)
首先,我会撤消对CRM网站web.config
的更改,您并不是真的想要更改应用程序文件,它可能不受支持,并且不太可能解决您的问题。
MSDN描述了如何成功进行身份验证 Authenticate to Microsoft Dynamics 365 with the Web API
它有点长,以便在这里重现,所以请检查链接。
使用Microsoft Dynamics 365(在线)或面向Internet的部署 当您使用适用于Dynamics 365的Web API(在线)或内部部署时 面向Internet的部署(IFD)您必须使用OAuth,如中所述 Connect to Microsoft Dynamics 365 web services using OAuth
如果您正在使用JavaScript创建单页面应用程序(SPA) 您可以按Use OAuth with Cross-Origin Resource Sharing to connect a Single Page Application to Microsoft Dynamics 365。
中所述使用adal.js库
答案 1 :(得分:0)
您是否看到了this MSDN页面?这适用于Web API,而不是WS,但它几乎相同