我们需要测试重定向到另一个网址的网址。两者都使用基本身份验证进行保护,但重定向URL需要另一组凭据。
是否可以修改更改新/重定向网址的基本身份验证凭据的请求。
Guzzle有一个 let that = this;
this.storage.ready().then(() => {
return this.storage.get('userTemp');
})
.then(retrieved => updateLoginClose(retrieved))
.catch(e => console.error('ERROR: could not read Storage, error:', e));
function updateLoginClose(retrieved) {
let isUserTemp:boolean;
if (retrieved !== null) {
isUserTemp = true;
} else {
isUserTemp = false;
}
that.data.showLoginClose = isUserTemp || that.UserService.getUser() || !that.isCordova.f();
}
(doc)选项,其allow_redirects
回调可以访问请求和响应对象。
我们如何修改提供新凭据的请求?
答案 0 :(得分:2)
IMO的简单方法是通过完全禁用重定向来“手动”执行此操作,并在这种情况下手动处理它们。
使用此解决方案,您可以使用任何新的/修改的选项创建第二个请求。
$initialResponse = $client->get(
'/',
[
'allow_redirects' => false,
'auth' => ['user1', 'pass1'],
]
);
// Check the exact status code from the redirect response.
if ($initialResponse->getStatusCode() === 303) {
$finalResponse = $client->get(
$initialResponse->getHeader('Location')[0],
[
'auth' => ['user2', 'pass2'],
]
);
}
如果你想创建一个真正透明(对于最终用户)的解决方案,那么我建议深入研究中间件。