小编tot*_*tas的帖子

将Cookie传递给CloudFront来源但阻止缓存

我在Symfony Web应用程序前面使用CloudFront作为缓存.要根据用户的角色(admin,customer,...)获取缓存,我会在Lambda @ Edge Viewer请求触发器中生成基于用户角色的哈希.我将该哈希作为请求标头传递给我的原点X-User-Context-Hash.

我现在的问题是我需要将PHPSESSIDcookie 传递给我的源,以获得正确的缓存响应,但我不想将缓存基于值的PHPSESSID.我只需要根据X-User-Context-Hash我的会话cookie 的值而不是我的缓存响应.

下面的图片应该详细解释我的问题

有没有可能实现这一目标?

非常感谢任何帮助.

在此输入图像描述

这是我的Lambda @ Edge Viewer请求触发器:

'use strict';

function parseCookies(headers) {
    const parsedCookie = {};
    if (headers.cookie) {

        console.log(`${headers.cookie[0].value}`);

        headers.cookie[0].value.split(';').forEach((cookie) => {
            if (cookie) {
                const parts = cookie.split('=');
                parsedCookie[parts[0].trim()] = parts[1].trim();
            }
        });
    }
    return parsedCookie;
}

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

    const https = require('https');

    // Read session cookie
    const parsedCookies …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services symfony amazon-cloudfront aws-lambda foshttpcachebundle

5
推荐指数
3
解决办法
2492
查看次数