试图将在网络会话中建立的cookie设置为返回API的头。

问题描述 投票:0回答:1

我试图通过web前端登录,并试图拦截一个cookie,然后在随后的API请求中使用它。我在将cookie传回GET请求中遇到了麻烦。代码贴在下面。

import https from 'https';
import { bitbucketUser } from "../userRole.js"
import { ClientFunction } from 'testcafe';

fixture `Request/Response API`
 //   .page `https://myurl.company.com/login`
    .beforeEach(async t => {
        await t.useRole(bitbucketUser)
});

    test('test', async t => {
        const getCookie = ClientFunction(() => {
            return document.cookie;
        });
        var mycookie = await getCookie()

        const setCookie = ClientFunction(mycookie => {
            document.cookie = mycookie;
        });

        var validatecookie = await getCookie()
        console.log(validatecookie)
        const executeRequest = () => {    
            return new Promise(resolve => {

                const options = {
                    hostname: 'myurl.company.com',
                    path: '/v1/api/policy',
                    method: 'GET',
                    headers: {
                        'accept': 'application/json;charset=UTF-8',
                        'content-type': 'application/json' 
                    }
                };

                const req = https.request(options, res => {
                    console.log('statusCode:', res.statusCode);
                    console.log('headers:', res.headers);


                    let body = "";

                    res.on("data", data => {
                        body += data;
                      });

                    res.on("end", () => {
                        body = JSON.parse(body);
                        console.log(body);
                      });

                    resolve();
                });

                req.on('error', e => {
                    console.error(e);
                });

                req.end();
            });
        };      

        await setCookie(mycookie)
        await executeRequest();
    });

我已经尝试了几个例子,但很不能理解我到底漏掉了什么。

testing automation automated-tests e2e-testing testcafe
1个回答
0
投票

当你调用 setCookie 方法,您使用ClientFunction修改浏览器中的cookies。然而,当你调用你的 executeRequest 方法,你在服务器端使用nodejs库运行它。当你在客户端设置cookie时,这不会影响你从服务器端发送的请求。您需要直接将cookie信息添加到您的 options 对象,在下面的线程中描述。如何使用cookie创建一个HTTP客户端请求?.

© www.soinside.com 2019 - 2024. All rights reserved.