0

我已经在 Cloudfront 中使用 lambda@edge 完成了重定向。

如何在特定条件下从 lambda@edge 回击原点?

那可能吗 ??

4

1 回答 1

2

在请求触发器中,如果您想将控制权返回给 CloudFront 并允许它继续正常处理请求,您可以使用原始请求调用回调并返回。

return callback(null, event.Records[0].cf.request);

如果您之前在处理程序中捕获了请求对象...

const request = event.Records[0].cf.request;

...然后您可以返回该副本:

return callback(null, request);

请注意,您可以callback()在没有的情况下调用return,但使用上面显示的样式可确保处理函数立即退出,并且不会执行低于此点的代码。

当您处于请求触发器中并且回调的第二个参数看起来像请求(不是响应)时,CloudFront 会继续处理并假定您不想生成响应。请求将被发送到源。

如果您修改源请求触发器中的请求对象,然后如上所示将其返回,这会修改 CloudFront 发送到源的内容,或者在某些情况下甚至可以更改请求将发送到的源,如果您的分配有多个起源。

于 2018-05-02T18:59:26.047 回答