首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WWW中设置基本身份验证凭据::机械化

在WWW中设置基本身份验证凭据::机械化
EN

Stack Overflow用户
提问于 2016-11-03 15:04:00
回答 1查看 1.4K关注 0票数 2

我在WWW:机械化中使用基本身份验证时遇到了困难。我正在尝试连接到条纹API,该文档声明:

Streak使用来用API键对每个请求进行签名。只需将请求的用户名设置为API键即可。密码字段被忽略。所有请求都必须在HTTPS上进行,因为HTTP请求将被忽略。 下面是一个示例请求: curl https://www.streak.com/api/v1/pipelines -u YOUR_API_KEY:

我可以以这种方式使用curl成功地访问API。但是,我无法使用WWW::Mechanize成功地进行身份验证。我要说的是:

代码语言:javascript
复制
#!perl

use warnings;
use strict;
use feature 'say';

use WWW::Mechanize;

my $api = 'https://www.streak.com/api/v1/';

my $mech = WWW::Mechanize->new( autocheck => 0 ); # don't die on errors

$mech->credentials('my API key here', '');

$mech->get($api . 'pipelines');

say $mech->response->status_line;
say $mech->res->request->as_string;

运行我的代码会得到:

代码语言:javascript
复制
401 Unauthorized
GET https://www.streak.com/api/v1/pipelines
Accept-Encoding: gzip
User-Agent: WWW-Mechanize/1.83

甚至没有尝试进行身份验证。有人能提出为什么会是这样,以及我能做些什么来解决这个问题吗?此代码在Strawberry Perl 5.24.0.1中运行,如果这可能与其有任何关系。

编辑包括来自审查请求对象的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-04 11:02:38

我发现了问题。

按照这篇关于Perl Maven的文章中的技术(“如何查找URL和领域?”),当您尝试连接到它时,API不会发送凭据的挑战,指定一个领域。它只会给出一个错误消息,说明基本身份验证是必需的。LWP::UserAgent当时不知道做任何其他事情。

因此,我从simbabque建议检查的成功curl请求中复制身份验证标头,并在用户代理对象上手动设置它:

代码语言:javascript
复制
$ua->default_header('Authorization' => 'Basic [Base64-encoded string here]');

现在起作用了。快乐时光。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40404920

复制
相关文章

相似问题

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