【发布时间】:2017-08-29 12:08:20
【问题描述】:
我在 NodeJS 项目(在 Docker 中运行)中使用 https://www.npmjs.com/package/magento-api-xmlrpc 库通过 XML-RPC 连接到 Magento v1.x。
我已经在我的 Windows 上进行了这样的本地测试:
let magento = new MagentoAPI({
host: 'test-domain.com',
port: 443,
path: '/api/xmlrpc',
login: 'api-username',
pass: 'api-password'
});
magento.login(function(err, sessId) {
if (err) {
console.log('Credentials verification failed:\n%j', err);
return cb(err, { verified: false });
} else {
console.log("Login Successful - Session Id: " + sessId);
return cb(null, { verified: true });
}
});
它有效:
Login Successful - Session Id: 1d0d9e764d7d955470f92fa93fb53ca8
当我在 docker 容器中测试它时(使用经过精确测试的配置 + 脚本),我收到了这个错误:
{"original":{"message":"未知的 XML-RPC 标记 'TITLE'","name":"Error"},"name":"Magento 错误","message":"一个错误 登录时发生"}
奇怪的是;如果我将测试脚本的port 设置为80(我知道这是无效的),我只会在 Windows 中看到上述错误。
有什么想法可能会出错吗?
【问题讨论】:
-
我认为这里的问题是您的服务器具有超文本访问权限,如果您可以为域
test-domain.com/api/xmlrpc配置另一个没有超文本访问权限的域,它可能会解决此问题 -
所有凭据都是正确的,我忘记了该站点有 IP 白名单。添加 docker 容器的公共 ip 后,它现在可以正常工作了。