javascript - Orchestrator 身份验证不适用于 Javascript XHR 请求
问题描述
我尝试建立一个网站,我可以在其中内部控制我们的 UiPath Orchestrator。我们正在使用本地 Orchestrator。
连接首先在 Postman/curl 中测试:
curl --location --request POST '{{url}}/api/Account/Authenticate' \
--header 'Content-Type: application/json' \
--data-raw '{
"tenancyName": "{{tenantName}}",
"usernameOrEmailAddress": "{{usernameOrEmailAddress}}",
"password": "{{password}}"
}'
这让我authtoken
没有任何问题。完美的。
然后我尝试curl
像XHR
在 Javascript 中那样实现它:
var data = JSON.stringify({"tenancyName":"...","usernameOrEmailAddress":"...","password":"..."});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://.../api/account/authenticate");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(data);
但 Firefox 和 Chrome 正在尝试预检。所以我得到了一个 404 状态码:
火狐:
铬合金:
我现在很困惑如何解决它。实际上,这显然是一个 CORS 问题。所以我尝试设置:
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
在我们的 IIS7 服务器上。没有任何改变。
此外,我尝试设置此设置以允许 Node.js 服务器和 XHR 请求上的所有内容。但是 404 留下了。
然后我尝试使用 Chrome 和 Firefox 插件来禁用 CORS。但是 404 留下了。
再次在 Postman 中,它自第一次尝试以来就完美运行。所以这只是一个CORS问题。但我想让CORS启用,也许只是以允许特定服务器的方式配置它。怎么做?
解决方案
另一种解决方案是在IIS10 上禁用cors。
但请确保这仅用于测试,并且仅在非公开运行时才安全!稍后您应该再次启用它并限制到您使用的域。
首先安装 Cors 模块。
第二步是将这一行添加到 IIS10 服务器的 web.config 文件中:
<configuration>
<system.webServer>
<cors enabled="true" failUnlistedOrigins="true">
<add origin="*">
<allowHeaders allowAllRequestedHeaders="true" />
</add>
</cors>
</system.webServer>
</configuration>
推荐阅读
- google-apps-script - Google Sheets appendrow() 函数将下拉列表视为单元格内容,即使它们是空的
- django - Django加入复合外键
- android - 错误膨胀类 android.suppot.design.widget.NavigationView'
- python - TypeError:参数 1 必须是字符串或只读缓冲区,而不是列出 Python 错误
- vue.js - 如何使用动态生成的 ID 创建 Vue.js 模式?
- python - 在发现模式下执行单元测试时,如何为单元测试全局配置日志记录?
- unit-testing - 一些测试按顺序运行,而另一些则并行运行
- datomic - 查找所有缺少特定属性的实体
- node.js - nodeJS + Express-Session 错误:无法设置未定义的属性“登录”
- python - 如何在 Python 中获取 dict 中的 dict 路径?