Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 自动气象站Lambda@Edge将查询字符串附加到响应_Angular_Amazon Web Services_Aws Lambda_Amazon Cloudfront_Aws Lambda Edge - Fatal编程技术网

Angular 自动气象站Lambda@Edge将查询字符串附加到响应

Angular 自动气象站Lambda@Edge将查询字符串附加到响应,angular,amazon-web-services,aws-lambda,amazon-cloudfront,aws-lambda-edge,Angular,Amazon Web Services,Aws Lambda,Amazon Cloudfront,Aws Lambda Edge,简要概述 我在S3存储桶上托管一个角度应用程序。我还得到了一个Cloudfront发行版来处理HTTPS和重定向 我尝试根据用户连接到的URL来形成querystring参数 2个例子 test.example.com --> example.com?id=test hello.example.com --> example.com?id?hello 到目前为止,我试图实现一个AWSlambda@Edge功能但到目前为止没有任何效果。如果我试图操纵请求它不会有任何效果,如果我试图操

简要概述

我在S3存储桶上托管一个角度应用程序。我还得到了一个Cloudfront发行版来处理HTTPS和重定向

我尝试根据用户连接到的URL来形成querystring参数

2个例子

test.example.com --> example.com?id=test
hello.example.com --> example.com?id?hello
到目前为止,我试图实现一个AWSlambda@Edge功能但到目前为止没有任何效果。如果我试图操纵
请求
它不会有任何效果,如果我试图操纵
响应
重定向不起作用,我会得到一个S3 bucket错误或Cloudfront错误

'use strict';
const remove_suffix = '.example.com';
exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const headers = request.headers;
    const host_header = headers.host[0].value;

    if(host_header.endsWith(remove_suffix)){
        request.querystring = 'id=' + host_header.substring(0,host_header.length - remove_suffix.length);
    }

    return callback(null,request);
};
1) 我应该使用哪个触发器

2) Cloudfront设置中可能缺少哪些设置


3) 我的Lambda函数是否错误?

您可能希望确保在Cloudfront发行版的
行为设置中,选项
查询字符串转发和缓存
设置为无(提高缓存)


您可以在中找到有关该选项的更多信息。

您可能希望确保在Cloudfront发行版的
行为
设置中,选项
查询字符串转发和缓存
未设置为
无(改进缓存)


有关该选项的更多信息,请参见thx中的建议。我收到folliwing错误
502错误,请求无法满足。Lambda函数结果验证失败:该函数尝试添加、删除或更改只读标头request.querystring
是完全有效的:我发布的代码仍然是一样的。我目前正在使用
查看器响应
触发器。好的,我会尝试将触发器更改为
查看器请求
,看看这是否有什么不同。现在我被重定向到s3存储桶,但没有任何查询字符串,我可以访问thx以获取建议。我收到folliwing错误
502错误,请求无法满足。Lambda函数结果验证失败:该函数尝试添加、删除或更改只读标头request.querystring
是完全有效的:我发布的代码仍然是一样的。我目前正在使用
查看器响应
触发器。好的,我会尝试将触发器更改为
查看器请求
,看看这是否有什么不同。现在我被重定向到s3存储桶,但没有任何我可以访问的查询字符串