Javascript BADREQUEST on.priority web sdk的登录功能
priority web sdk.login函数使用以下示例代码在网页上包含脚本时返回一个BADREQUEST:Javascript BADREQUEST on.priority web sdk的登录功能,javascript,Javascript,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.
<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>
虽然在这一点上,我得到了一个权限错误
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的评论,我已经在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标头,但预飞行仍然失败:
XMLHttpRequest cannot load https://erpdemo.emerge-it.co.uk/wcf/wcf/service.svc.
Response for preflight has invalid HTTP status code 400
我可以确认飞行前需要哪些标题吗?原点错误您可以在这里阅读: 为了解决这个问题,您需要设置一个代理来为您发出服务器请求。实际上,我不知道为什么在使用NPM运行时不会出现相同的错误。从NPM运行时,您是否做了一些不同的事情 对于您的权限问题-您使用的用户名是什么?关于代理: 所有web浏览器都实现一个名为“同源”的策略。它是针对各种类型的跨站点脚本(XSS)攻击的预防措施 如果发布页面的HTML页面的来源与API域不同,此策略要求浏览器阻止对API服务器的请求(在您的案例中为eshbelsaas.com域) 解决此问题的一种方法是在服务器端,向HTTP响应添加一个特殊的头,指示浏览器不要强制执行策略。由于这违背了策略的目的,服务器管理员不愿意这样做 另一种解决方法是在客户端,在浏览器和API服务器之间插入web代理。浏览器将代理视为HTML页面和API调用的来源,因此API调用将通过
许多web开发环境提供集成代理正是出于此目的,请查看IDE的文档以了解您的IDE是否也提供集成代理。跨域限制仅适用于浏览器,因为只有浏览器才容易受到XSS攻击。只有在应用程序开发期间才需要代理,因为在生产过程中,您的HTML通常与服务位于同一个源上。代理是否会将跨站点“访问控制允许源”标题添加到服务器端?请参阅:@Leor-Ah,因此服务器头中故意省略了“访问控制允许源”,以防止跨域调用,因为客户端通常从同一个域提供服务?有没有办法绕过沙箱(使用apidemo作为用户)进行测试?代理是什么意思?用户名“apidemo”有权访问以下表单:订单及其子表单:代理和ExtFile。此外,此用户名对订单表单中的直接激活“WWWSHOWORDER”具有权限。@NeomiBushary啊,太好了,谢谢。我现在看到node.js中返回的记录。你能提供一些关于使用代理来解决客户机设计的跨域问题的更多信息吗?谢谢我试图破解http重定向:[img](!),但软件包仍然检测到302'd文件来自另一个域到client.js。我使用的是VS,但我想我可以等到我们有了一个全新的v18服务器,在与service.wcf相同的url上托管客户端。@Leor您能详细说明一下吗?当提到HTTP头时,您是指访问控制允许源吗?你能解释一下这是如何违背CORS的目的的吗?如果我将允许来源设置为“my other domain.com”?你能分享更多关于如何设置web代理的信息吗?这将是多少安全?我是否应该从您的回答中了解到Priority仅支持Priority服务器内的API/SDK调用?这似乎会限制我们为客户创建服务的能力。
XMLHttpRequest cannot load https://erpdemo.emerge-it.co.uk/wcf/wcf/service.svc.
Response for preflight has invalid HTTP status code 400