当我试图从我的自定义webAPI访问数据时,我面临着被CORS策略错误阻止的API。
下面是我用来进行webAPI调用的代码。
var orgurl = "<web api url>";
var req = new XMLHttpRequest();
req.open("GET", encodeURI(orgurl), false);
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.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.setRequestHeader('Access-Control-Allow-Credentials', 'false');
req.setRequestHeader('Access-Control-Allow-Origin', '*');
req.setRequestHeader('Access-Control-Allow-Methods', '*');
req.setRequestHeader('Access-Control-Allow-Headers', "*");
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
console.log("this.status: " + this.status);
if (this.status === 200) {
console.log("this.response: " + this.response);
var result = JSON.parse(this.response);
if (result.length > 0) {
for (var i = 0; i < result.length; i++) {
var obj = {};
obj.name = result[i].NAME;
console.log("obj: " + obj);
}
}
}
} else {
alert(this.statusText);
}
};
req.send();以下是错误消息:
CORS策略阻止了
对来自“XMLHttpRequest”的XMLHttpRequest的访问:对飞行前请求的响应不通过访问控制检查:请求的资源上不存在“访问控制-允许-原产地”标题。
以上代码工作良好,如果我是使用铬后禁用-网络安全。使用命令chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
我已经在Web的C#配置和控制器文件中添加了设置,但是我仍然无法从Web中获得响应。
请提供你的建议。
发布于 2019-12-05 09:58:16
据我所知,您不能直接从另一个服务中调用webapi。相反,您需要创建一个蓝色的应用程序,允许动态在线,而对于该应用程序,忽略CORAS。您将需要非交互式用户使用此功能。这是供参考的链接。
https://learn.microsoft.com/en-us/power-platform/admin/create-users-assign-online-security-roles
https://stackoverflow.com/questions/59170293
复制相似问题