尝试从外部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描述了如何成功进行身份验证
Authenticate to Microsoft Dynamics 365 with the Web API

要在此处复制它有点漫长,所以请检查链接。


  使用Microsoft Dynamics 365(在线)或面向Internet的部署
  当您将Web API用于Dynamics 365(在线)或本地时
  面向互联网的部署(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库。

关于javascript - 从外部系统验证Dynamics CRM 2016 Rest Web服务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41586331/

10-10 09:10