Почему я постоянно получаю ошибку 302 при тестировании этих перенаправлений, когда мне нужно 301? - PullRequest
0 голосов
/ 07 октября 2019

Я пишу тесты в Javascript, где мне нужно проверить, что перенаправления со скрытых поддоменов работают правильно. В реальной программе это работает, но была проблема с развертыванием, из-за которой мне пришлось писать тесты, чтобы удостовериться, что 301 - это код состояния ответа.

Моя функция:

function hiddenDomainFetch(url, args) {
    console.log("OG url fed is " + url)
    var parsed = URL.parse(url);
    console.log("url now is " + parsed.href);
    parsed.protocol = 'http';
    parsed.hostname = 'localhost';
    parsed.port = process.env.PORT;
    parsed.host = parsed.hostname + ":" + parsed.port;
    url = URL.format(parsed);
    console.log("after format, url is " + url);
    console.log("after format, pathname is " + url.pathname);

    // var options = {
    //    headers: {
    //      "X-Forward-To": 'https://example.com'
    //    }
    //  };


    //protocol(url).header('Forwarded','https://example.com');
    protocol(url).get(url, function(response) {

        console.log(url);
        if(response.statusCode == 301) {
            //console.log(util.format("Redirecting %s to %s", url, response.headers['location']));
            args.success(response);
            return;
        }

        else {
            args.fail(response);
            return;
        }

    });
}

и мойкод тестирования:

    describe('Restricted Subdomain',function(){
        const root = path.resolve(__dirname,'..');
        var localBuffer = fs.readFileSync(root + '/project/local.js');
        var restrictedDomains = JSON.parse(localBuffer).URLrewrites.redirects; //where forbidden subdomains are pulled from
        console.log(restrictedDomains);
        var rand = Math.floor((Math.random() * restrictedDomains.length)); //choosing one at random
        var testLink = restrictedDomains[rand]; //the chosen link
        console.log("here is test link: " + testLink)

        it('reroutes to main site correctly',function(done){
            var options = {
                  headers: {
                    "Forwarded": 'https://example.com'
                  }
                };
            hiddenDomainFetch(testLink,
                {
                        success: function(body) {
                            done();
                        },
                        fail: function(response) {
                            done(new Error(response.statusCode));
                        }
                    }, options)
        });

    })

Я все еще получаю 302 ошибки. То, что закомментировано, это то, что я пробовал, и это не сработало. Как мне заставить его работать правильно?

...