Lambda @ Edge маршрутизация между двумя источниками на основе cookie - PullRequest
0 голосов
/ 31 августа 2018

Может, кто-нибудь подскажет, как использовать Lambda @ Edge для маршрутизации на 2 разных источника на основе файлов cookie? Я попробовал приведенный ниже код, но он не работает. Заранее спасибо.

 'use strict';

exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const headers = request.headers;
    const origin = request.origin;

    //Setup the two different origins
    const originA = "site1.example.com";
    const originB = "site2.example.com";


    //Determine whether the user has visited before based on a cookie value
    //Grab the 'origin' cookie if it's been set before
    if (headers.cookie) {
        for (let i = 0; i < headers.cookie.length; i++) {
            if (headers.cookie[i].value.indexOf('origin=A') >= 0) {
                console.log('Origin A cookie found');
                headers['host'] = [{key: 'host',          value: originA}];
                origin.s3.domainName = originA;
                break;
            } else if (headers.cookie[i].value.indexOf('origin=B') >= 0) {
                console.log('Origin B cookie found');
                headers['host'] = [{key: 'host',          value: originB}];
                origin.s3.domainName = originB;
                break;
            }
        }
    }    

    callback(null, request);
};

1 Ответ

0 голосов
/ 03 сентября 2018

Похоже, вы не используете s3 origin. Изменение s3 на custom в вашем коде решит проблему.

origin.custom.domainName = originA;
origin.custom.domainName = originB;
...