Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Chrome&;中启用CORS;MSCRM Web API的FF(跨子域)_Javascript_Xmlhttprequest_Cors_Dynamics Crm_Dynamics Crm 2016 - Fatal编程技术网

Javascript 在Chrome&;中启用CORS;MSCRM Web API的FF(跨子域)

Javascript 在Chrome&;中启用CORS;MSCRM Web API的FF(跨子域),javascript,xmlhttprequest,cors,dynamics-crm,dynamics-crm-2016,Javascript,Xmlhttprequest,Cors,Dynamics Crm,Dynamics Crm 2016,我正在开发一个应用程序,该应用程序将托管在MSCRM安装的单独子域上。在这个应用程序中,我依靠CRM的WebAPI来完成一些任务,例如检索和记录创建。在InternetExplorer中一切都运行良好,但我在FireFox和Chrome中仍然会遇到严重错误。到目前为止,我尝试了几种不同的方法,包括普通XHR、JQuery/Ajax、Iframe和Jsonp(预构建和手动)。我确实确保在MSCRM服务器的web配置中包含CORS头。同样重要的是要继续注意,这已经在InternetExplorer中

我正在开发一个应用程序,该应用程序将托管在MSCRM安装的单独子域上。在这个应用程序中,我依靠CRM的WebAPI来完成一些任务,例如检索和记录创建。在InternetExplorer中一切都运行良好,但我在FireFox和Chrome中仍然会遇到严重错误。到目前为止,我尝试了几种不同的方法,包括普通XHR、JQuery/Ajax、Iframe和Jsonp(预构建和手动)。我确实确保在MSCRM服务器的web配置中包含CORS头。同样重要的是要继续注意,这已经在InternetExplorer中起作用了

我从chrome收到的错误是:
XMLHttpRequest无法加载https://mycrm.mydomain/myorg/api/data/v8.0/new_entityname(00000000-0000-0000-0000-000000000000)?$select=new_字段名,。飞行前响应中的访问控制允许标头不允许“请求标头”字段“首选”。

在FireFox中,我没有收到任何消息。它根本不起作用

这是我目前正在使用的函数

var Request=function(查询、成功回调、错误回调){
var\u url=FormatString(“{0}/{1}/api/data/v8.0/{2}”,CrmConnection.BaseUrl,CrmConnection.\u org,query);
var req=新的XMLHttpRequest();
请求打开(“获取”,url,true);
请求setRequestHeader(“OData MaxVersion”,“4.0”);
请求setRequestHeader(“OData版本”、“4.0”);
请求setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
req.setRequestHeader(“首选”、“odata.include注释=\”*\”);
req.onreadystatechange=函数(){
if(this.readyState==4){
req.onreadystatechange=null;
如果(this.status==200){
var results=JSON.parse(this.response);
如果(结果[“值”]| | null!=null)
successCallback(results.value);
其他的
成功回调(结果);
}
否则{
log(“开始响应头”)//
console.log(this.getAllResponseHeaders());//返回空字符串
日志(“结束响应头”)//

errorCallback(FormatString(“XHRWAPI Error:'{0}';”,this.statusText));//此消息的最终结果是XHRWAPI Error:“正如Jaromanda X所述,添加缺少的头是解决方案。只需将头添加到配置文件或IIS(如果适用)。

Chrome控制台是否“网络”选项卡显示所有CORS头实际上都在HTTP响应中返回?这可能是一个配置问题,尽管您当前的web.config。这是一个开始。有一个线索
请求头字段prefere是不允许的
…查看如何不允许
prefere
头-您可能还需要允许ode>OData MaxVersion
OData Version
标题您可能还希望允许使用“原始”和“接受”标题。@JaromandaX谢谢!这解决了我最初的问题。它已演变为401未经授权的标题,但这是一个单独的主题。如果您想回答,我将其标记为正确。