无法通过挂钩将 header 值添加到 HTTP 请求
Cannot add header value to HTTP request via hooks
使用 Testcafe,我尝试将 HTTP Header key/value 对添加到我的所有请求中,但是当我检查网络请求时它没有出现在请求 header 中in-browser 在实时模式中。
我想知道这是否是 TypeScript 的潜在问题?我不得不修改文档中的示例代码,以允许方法参数的类型为 any
以使其编译,这令人惊讶,因为我在其他地方没有看到该要求,TC 只是 'handles'它。
两个问题,然后:
- 我期待看到 header
wafAccessToken
对出现在对 http://www.google.com
的请求中,但它不是 - 知道可能是什么问题吗?
- 有没有办法让我的
RequestHook
不在构造函数中指定确切的 URL?我只希望它匹配和修改每个请求,无论我要去哪里。
代码如下:
import { RequestHook } from 'testcafe';
export class WebSwitchHook extends RequestHook
{
constructor(requestFilterRules: any, responseEventConfigureOpts: any)
{
super(requestFilterRules, responseEventConfigureOpts);
// ...
}
async onRequest (e: any)
{
e.requestOptions.headers['wafAccessToken'] = "REDACTED";
console.log(e.requestOptions);
}
async onResponse (e: any) {
console.log(e.body);
}
}
const webSwitchHook = new WebSwitchHook("http://www.google.com", {
includeHeaders: true,
includeBody: true
});
fixture.only('Test')
.page("http://www.google.com")
.requestHooks(webSwitchHook);
test('Test', async t => {
});
您分享的代码工作正常。你可以在服务器上看到你添加的headers。您还可以将 RequestLogger 附加到夹具并在那里查看更新的 headers。
关于您的第二个问题,您可以使用 this example 中的代码对所有请求使用 RequestHook
:
class JwtBearerAuthorization extends RequestHook {
constructor () {
super();
}
//...
}
或者,将正则表达式传递给 RequestHook 构造函数以仅将其用于匹配 URL。
使用 Testcafe,我尝试将 HTTP Header key/value 对添加到我的所有请求中,但是当我检查网络请求时它没有出现在请求 header 中in-browser 在实时模式中。
我想知道这是否是 TypeScript 的潜在问题?我不得不修改文档中的示例代码,以允许方法参数的类型为 any
以使其编译,这令人惊讶,因为我在其他地方没有看到该要求,TC 只是 'handles'它。
两个问题,然后:
- 我期待看到 header
wafAccessToken
对出现在对http://www.google.com
的请求中,但它不是 - 知道可能是什么问题吗? - 有没有办法让我的
RequestHook
不在构造函数中指定确切的 URL?我只希望它匹配和修改每个请求,无论我要去哪里。
代码如下:
import { RequestHook } from 'testcafe';
export class WebSwitchHook extends RequestHook
{
constructor(requestFilterRules: any, responseEventConfigureOpts: any)
{
super(requestFilterRules, responseEventConfigureOpts);
// ...
}
async onRequest (e: any)
{
e.requestOptions.headers['wafAccessToken'] = "REDACTED";
console.log(e.requestOptions);
}
async onResponse (e: any) {
console.log(e.body);
}
}
const webSwitchHook = new WebSwitchHook("http://www.google.com", {
includeHeaders: true,
includeBody: true
});
fixture.only('Test')
.page("http://www.google.com")
.requestHooks(webSwitchHook);
test('Test', async t => {
});
您分享的代码工作正常。你可以在服务器上看到你添加的headers。您还可以将 RequestLogger 附加到夹具并在那里查看更新的 headers。
关于您的第二个问题,您可以使用 this example 中的代码对所有请求使用 RequestHook
:
class JwtBearerAuthorization extends RequestHook {
constructor () {
super();
}
//...
}
或者,将正则表达式传递给 RequestHook 构造函数以仅将其用于匹配 URL。