首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在node.js中转义bitbucket-api密码中的圆括号

如何在node.js中转义bitbucket-api密码中的圆括号
EN

Stack Overflow用户
提问于 2014-04-06 18:34:13
回答 1查看 338关注 0票数 0

我正在尝试使用node.js中的bitbucket-api访问BitBucket上的特定存储库,而我的密码包含有趣的字符(圆括号和空格)。它不会抛出任何有用的错误,也不会让我获取数据。

我碰巧喜欢我的密码,所以我不想更改它。我知道删除密码中的圆括号和空格可以解决这个问题。

我能做什么?

EN

回答 1

Stack Overflow用户

发布于 2014-04-06 18:34:13

在对curl-transport.js的实现进行了大量的搜索和深入研究之后,我找到了解决这个问题的方法。它依赖于对curl-transport传递给require('child_process').exec的内容的理解。

本质上,该机制的工作方式是启动一个新的CURL进程并传入命令行参数。通过使用圆括号,它可以混淆CURL,而通过使用空格,它可以混淆命令行参数解析。因此,要解决这个问题,只需添加一个双引号作为用户名的第一个字符,并添加一个结束双引号作为密码的最后一个字符;因此,当两个字符串连接在一起(例如: username+":"+password)时,最终的字符串将是"USERNAME:PASSWORD",它将get作为一个参数传递给进程。

我的节点代码如下所示:

代码语言:javascript
复制
var bitbucket = require('bitbucket-api');
var credentials = { username: '"USERNAME', password: 'PASSWORD With Spaces and ()s"' };
var client = bitbucket.createClient(credentials);
var repository = client.getRepository({ slug: 'repoName', owner: 'USERNAME' }, function (err, repo) {
    //Code to access the repo object.
    console.log(repo);
});

注意username如何在值的开头有一个额外的双引号(这就是hack)。我在下面添加了空格并强调了它,因为它不明显:

用户名:‘" USERNAME'

注意password如何在值的末尾有一个额外的双引号(这就是hack)。我在下面添加了空格并强调了它,因为它并不明显:

密码:‘带有空格和()的密码“" '

然后调用将成功,您将获得存储库的详细信息。

顺便说一句,这个修复适用于Windows8上bitbucket-api的V0.0.6。

这里有一个有用的说明:

在windows上,请记住将以下内容放入您的路径中,以便它可以找到CURL。您可以通过[Win8: Windows-X]->System->Advanced System Settings->Advanced->System Variables->Path->Edit...完成此操作

确保git的二进制文件在CURL的路径中:

代码语言:javascript
复制
C:\Program Files (x86)\Git\bin

此外,如果你试图让它在heroku上工作,那么你可能需要解决路径问题,方法是在C:\Heroku下重新安装Heroku工具带(参见其他帖子了解原因),并将以下内容添加到路径中:

代码语言:javascript
复制
C:\Heroku\ruby-1.9.2\bin;C:\Heroku\bin;C:\Program Files (x86)\Git\bin
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22892851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档