CloudFront 调试缺少的 Cookie 值

CloudFront Debugging Missing Cookie Value

我很难确定我的 CloudFront 设置需要做什么才能使我的签名 cookie 设置正常工作。我已仔细按照这些步骤使用带有 NodeJS 的模块来处理 cookie 生成 (https://github.com/jasonsims/aws-cloudfront-sign)。使用我当前的设置,正在为位于 beta.my-site.com 的我的应用程序设置 cookie,但当我的应用程序上的 link 访问云端分发后面的文件时,cookie 不会出现在请求和响应 cookie 中(files.my-site.com).这一直令人沮丧,因为我觉得我已经查看了所有内容,但关于为什么我的设置可能无法正常工作只有一些线索。

1) 首先值得注意的是没有为 cookie 设置域名,这可能是一个问题,因为只要域仍然是 cookie 就应该能够通过子域持续存在一样。

2) 有没有办法从 curl 测试我的 cookie 以确保它与我设置的 cookie 无关?不幸的是,由于 cloudfront 的严格性和 cookie 需要与 cloudfront 分发配置具有相同的主机名,因此无法从 localhost.

进行测试

文件名和密钥是随机生成的,不是真实的。

Cloudfront 分发配置:

Distribution Status: Deployed
Alternate Domain Names (CNAMEs): files.my-site.com, beta.my-site.com, *.my-site.com
SSL Certification: *.my-site.com (bjdsofjwpefsd4235)
Domain Name: uhr82459shfngbc.cloudfront.net
Custom SSL Client Support: SNI
Origin Domain Name: files-beta.s3.amazonaws.com
Restrict Bucket Access: Yes
Your Identities: access-identity-files-beta.s3.amazonaws.com
Viewer Protocol Policy: HTTPS Only
Allows HTTP Methods: GET, HEAD
Restrict Viewer Access: Yes
Trusted Signers: Self

53 号公路:

beta.my-site.com CNAME server-beta.elasticbeanstalk.com
file.my-site.com A ALIAS uhr82459shfngbc.cloudfront.net

我的应用程序中设置的 Cookies (beta.my-site.com):

访问文件时设置的 Cookies (files.my-site.com):

当前代码设置:

var express = require('express');
var router  = express.Router();
var passport = require('passport');
var crypto = require('crypto');
var moment = require('moment');
var path = require('path');
var fs = require('fs');
var cf = require('aws-cloudfront-sign');
var metaTags = require('./meta-routes');
var cfPK = fs.readFileSync(path.join(__dirname + /config/pk-UHANFBYH54248.pem));

var cfOptions = {
    keypairId: 'E5YGBKNfsdfds472',
    privateKeyString: cfPK
}

var signedCookies = cf.getSignedCookies('https://files.my-site.com/*', cfOptions);

function isLoggedIn(req, res, next) {
    if (req.isAuthenticated())

        for(var cookieId in signedCookies) {
            res.cookie(cookieId, signedCookies[cookieId]);
        }

        return next();
    res.redirect('/login');
}

行为设置:

最大的问题与我的 Cloudfront 请求 Cookie 的域属性中的 N/A 值有关。为了将 cookie 从父域传递到子域,此属性需要具有主机名的值。