0

以下は私が持っているラムダコードですなぜAWS CloudfrontがTabletデバイスをタブレットとして分類していないのですか?

私がラムダに当たったとき、私は「デスクトップ」または「モバイル」を得ることができました。私が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); 
}; 

ラムダに受信したヘッダーもダブルチェックしました。

'CloudFront-Is-Desktop-Viewer': 'true', 
'CloudFront-Is-Mobile-Viewer': 'false', 
'CloudFront-Is-SmartTV-Viewer': 'false', 
'CloudFront-Is-Tablet-Viewer': 'false', 
'CloudFront-Viewer-Country': 'US', 

のUser-Agent:

のMozilla/5.0(iPadの、CPUのOSはMac OS Xのような8_1)のAppleWebKit/600.1.4(ヤモリのようにKHTML、)バージョン/ 8.0モバイル/ 12B410サファリ/ 600.1.4

これに関するあらゆる指針は非常に高く評価されています。

+1

私はここで「デスクトップ」を説明することはできませんが、あなたのテストは、この順序である必要があります:(オプション)SmartTVをモバイルデスクトップ分類であるため、相互に排他的ではありません...そして、その後、その後、タブレット。たとえば、Is-Tablet-ViewerとIs-Mobile-Viewerが両方ともtrueに設定され、タブレットで表示されるので、モバイルを最初にテストして正しい答えを得ることはできません。 –

+0

ありがとうございました。それはうまくいった。 – Kannaiyan

+0

私は答えとして投稿します。 –

答えて

1

CloudFrontは、User-Agentヘッダーの値に基づいて、要求を原点に転送する前に、これらのヘッダーの値をtrueまたはfalseに設定します。 デバイスが複数のカテゴリに分類される場合は、複数の値が該当する可能性があります。たとえば、タブレットデバイスの中には、CloudFront-Is-Mobile-ViewerとCloudFront-Is-Tablet-Viewerの両方をtrueに設定するものがあります。 あなたは、単一のデバイスの分類にこれらをダウンコンバートしている場合

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device

だから、あなたはあなたが停止し、この順序でそれらをテストする場合は最も賢明な結果を得る可能性がある(強調は追加します)最初の試合:

CloudFront-Is-SmartTV-Viewer 
CloudFront-Is-Tablet-Viewer 
CloudFront-Is-Mobile-Viewer 
CloudFront-Is-Desktop-Viewer 
関連する問題