gpt4 book ai didi

javascript - BADREQUEST 关于 priority-web-sdk 的 .login 功能

转载 作者:行者123 更新时间:2023-11-30 15:14:56 34 4
gpt4 key购买 nike

priority-web-sdk .login 函数在使用以下示例代码由网页上的脚本包含时返回 BADREQUEST:

<script 
src="https://cdn.priority-software.com/upgrades/var/api/v1.5/priorityapp.nocache.js">
</script>
<script>

var config = {
url: 'https://www.eshbelsaas.com/ui/',
...
};

function priorityReady() {
login(config).then(
onsuccess=>
{
console.log('Your are in!! Enjoy!');
},
reason=>
{
console.log(reason.message);
}

</script>

邮件全文如下:

XMLHttpRequest 无法加载 www.eshbelsaas.com/…/service.svc。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin” header 。因此不允许访问源“null”。响应具有 HTTP 状态代码 400。

相同的行为表现在:

  • Chrome
  • 边缘
  • JavaScript UWP 应用

然而,我能够在 node.js 中对包进行 NPM 并使用相同的配置设置登录:

var priority = require('priority-web-sdk');

var config = {
url: 'https://www.eshbelsaas.com/ui/',
...
};

priority.login(config)
.then(() => priority.formStart('CUSTOMERS', null, null, 'demo', 0))
.then(form => form.getRows(1))
.then(rows => console.log(rows))
.catch(err => console.log(err));

尽管此时我收到权限错误。

Debugger listening on [::]:5858
{ type: 'apiError',
code: null,
message: 'Privilege required for \'Customers\' form (internal name = CUSTOMERS, company = Demo Company). Contact your system manager.',
form: null,
fatal: true }


更新2.

根据@leor|s 的评论,我已将访问控制 header 添加到 v18 服务器上的/wcf。

telnet erpdemo.emerge-it.co.uk 80
GET /wcf/wcf/service.svc HTTP/1.1
HOST:erpdemo.emerge-it.co.uk


HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 6437
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Credentials: true
Date: Wed, 21 Jun 2017 10:42:04 GMT
...

不幸的是,当 clientUI 不再识别丢失的 Access-Control-Allow-Origin header 时,预检仍然失败:

XMLHttpRequest cannot load https://erpdemo.emerge-it.co.uk/wcf/wcf/service.svc. 
Response for preflight has invalid HTTP status code 400

我可以确认飞行前需要哪些 header 吗?

最佳答案

关于代理:

所有网络浏览器都实现称为同源的策略。它是针对各种类型的跨站点脚本 (XSS) 攻击的预防措施。

如果发布页面的 HTML 页面来源与 API 域不同,则此策略要求浏览器阻止对 API 服务器(在您的情况下为 eshbelsaas.com 域)的请求。

解决这个问题的一种方法是在服务器端,通过向 HTTP 响应添加一个特殊的 header 来指示浏览器不要执行该策略。由于这违背了政策的目的,服务器管理员不愿意这样做。

另一种解决方法是在客户端,通过在浏览器和 API 服务器之间插入网络代理。浏览器将代理视为 HTML 页面和 API 调用的来源,因此 API 调用将通过。

许多 Web 开发环境专门为此目的提供集成代理,请查看您的 IDE 的文档以了解您的 IDE 是否也这样做。

关于javascript - BADREQUEST 关于 priority-web-sdk 的 .login 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44612710/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com