You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Node.js Lambda函数:满足条件重定向,否则放行原请求

完善CloudFront Viewer Request Lambda函数以继续原请求

当你的Lambda函数作为CloudFront的Viewer Request触发器时,如果不需要修改或中断请求,直接返回传入的event.request对象即可,CloudFront会基于这个对象继续处理原请求流程。

修改后的完整代码如下:

'use strict';

exports.handler = async (event, context, callback) => {
    // 替换成你的实际条件判断逻辑,比如检查请求路径、请求头、客户端IP等
    const conditionMet = /* 示例:event.request.uri === '/need-redirect' */ false;

    if (conditionMet) {
        const response = {
            status: '302',
            statusDescription: 'Found',
            headers: {
                location: [
                    {
                        key: 'Location',
                        value: 'https://www.yahoo.fr',
                    }
                ],
            },
        };
        return response;
    } else {
        // 直接返回原请求对象,CloudFront将继续按原流程处理请求
        return event.request;
    }
};

关键说明:

  • Viewer Request类型的Lambda@Edge函数有两种返回逻辑:
    • 返回响应对象(如你写的302跳转响应):CloudFront会直接把这个响应返回给用户,中断原请求链路
    • 返回请求对象(event.request):CloudFront会携带这个请求继续向后端(缓存或源站)发起请求
  • 务必把conditionMet替换为实际的判断逻辑,比如检查请求URI、查询参数、请求头字段等
  • 注意CloudFront要求的响应头格式:每个头字段是包含key和value的数组,且key的大小写需要符合HTTP规范(比如Location首字母大写)

内容的提问来源于stack exchange,提问作者Thomas Carlton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:35:16