【发布时间】:2018-04-27 17:35:07
【问题描述】:
下面是我的 Lambda 代码。
当我点击 lambda 时,我可以获得“桌面”或“移动”。当我发送 Tablet UserAgent 时,它不会将其归类为 Tablet。
exports.handler = (event, context, callback) => {
var region = process.env.AWS_REGION ? process.env.AWS_REGION : 'us-east-1';
console.log(region);
console.log(event);
var device = {};
if( event.headers['CloudFront-Is-Mobile-Viewer'] === "true" )
device.device = 'Mobile';
else if ( event.headers['CloudFront-Is-Tablet-Viewer'] === "true" )
device.device = 'Tablet';
else
device.device = 'Desktop';
var response = {
statusCode: 200,
body: JSON.stringify(device)
};
callback(null, response);
};
我也仔细检查了接收到 lambda 的标头。
'CloudFront-Is-Desktop-Viewer': 'true',
'CloudFront-Is-Mobile-Viewer': 'false',
'CloudFront-Is-SmartTV-Viewer': 'false',
'CloudFront-Is-Tablet-Viewer': 'false',
'CloudFront-Viewer-Country': 'US',
用户代理:
Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4
【问题讨论】:
-
我无法在这里解释“桌面”,但您的测试需要按以下顺序进行:SmartTV(可选)然后是平板电脑,然后是移动设备,然后是桌面......因为这些分类不是相互排斥的。例如,您可以并且将会使用平板电脑查看 Is-Tablet-Viewer 和 Is-Mobile-Viewer both 设置为 true,因此您无法先测试移动设备并获得正确答案.
-
非常感谢。那行得通。
-
我会把它作为答案发布。
标签: amazon-web-services lambda amazon-cloudfront aws-api-gateway