修改 javascript header 回复

modify javascript header response

我在 javascript 中有以下脚本。

'use strict';
exports.handler = (event, context, callback) => {
    
    //Get contents of response
    const response = event.Records[0].cf.response;
    const headers = response.headers;
//Set new headers 
 headers['X-Robots-Tag'] = [{key: 'X-Robots-Tag', value: 'noindex'}]; 

    callback(null, response);
};

每个请求他 returns 他修改 X-Robots-Tag 的 noindex 值。

现在出现了另一个需求,我必须为特定的 uri 传递另一个 header。

例如,我想,当你到达时,请求:

www.mydomain.com/ads

插入 headers

X-Ads-Tag value: true : Exemple headers['X-Ads-Tag'] = [{key: 'X-Ads-Tag', value: 'true'}];

当收到请求时

www.mydomain.com/marketing

插入 headers

Value X-Marketing-Tag: true : Exemple headers['X-Marketing-Tag'] = [{key: 'X-Marketing-Tag', value: 'true'}];

a url 将始终相同,这可能会发生变化,并且将来会有更多不同的 uri 和新标题。

Example uri:
/ads
/marketing
/hub
/gamming

放置这些常量,他给我带来到达的 uri。

const uri = response.uri;

有人可以帮助我吗?

您可以创建一个函数来检查 url 并基于 url 添加更多 headers.

export.handler = (event, context, callback) => {

  //Get contents of response
  const response = event.Records[0].cf.response;
  const headers = response.headers;
  addMoreHeaders(response.uri, headers)
  //Set new headers 
  headers['X-Robots-Tag'] = [{
    key: 'X-Robots-Tag',
    value: 'noindex'
  }];


  callback(null, response);
};

const addMoreHeaders = (url, headers) {
  let key = ""
  let value = ""
  const name = ""
  const urls = url.split('/')
  const end = urls[urls.length - 1]
  switch (end) {
    case 'ads':
      key = "ab";
      value = "v";
      name = "ads";
      break;
      .....
  }
  headers[name] = [{
    key,
    value
  }]
}

我不确定我是否理解正确,但如果您能够获得当前请求的 uri,您可以简单地执行

const uri = response.uri;
if (/^\/ads/i.test(uri)) {
  headers['X-Ad-Tag'] = [{key: 'X-Ad-Tag', value: 'true'}]; 
} else if (/^\/marketing/i.test(uri)) {
  headers['X-Marketing-Tag'] = [{key: 'X-Marketing-Tag', value: 'true'}]; 
} 

/^\/ads/i.test(uri)是正则表达式,测试uri是否以/ads

开头