简体   繁体   中英

How to get all Apigee request headers in JavaScript?

I have some JavaScript in which I need to work with all the request headers in Apigee. The online doc ( http://apigee.com/docs/api-services/content/javascript-object-model ) mentions them available via context.proxyRequest.headers as name/value pairs. Do I have to iterate through them, or are they available en masse as an array via context.proxyRequest.headers?

Thanks.

You can access the request headers through your javascript using something like below

var request_headers = context.getVariable("request.headers.names");

The scope of this variable is only within the proxy request flow.

This code works for me to examine all the request headers:

// reflectHeaders.js
// ------------------------------------------------------------------
//
// formats the request headers into a JSON response.
//
// created: Tue May 13 11:42:19 2014
// last saved: <2014-May-13 12:05:39>

var requestHeaders = context.getVariable("request.headers.names"),
    result = {};

// requestHeaders is a java.util.TreeMap$KeySet; convert it to string
requestHeaders = requestHeaders + '';

// convert from "[A, B, C]" to an array of strings: ["A", "B", "C"]
requestHeaders = requestHeaders.slice(1, -1).split(', ');

// insert each header into the response
requestHeaders.forEach(function(x){
  var a = context.getVariable("request.header." + x );
  result[x] = a;
});

// set the response content:
context.setVariable('response.content', JSON.stringify(result, null, 2));

If you like, here is a complete proxy bundle that shows how to use this JS. Just deploy it into an Apigee org and invoke it like this:

curl -H x-custom-header:my-custom-value http://ORG-ENV.apigee.net/v1/ex-js-header

output:

{
  "Accept": "*/*",
  "Host": "ORG-ENV.apigee.net",
  "User-Agent": "curl/7.30.0",
  "x-custom-header": "my-custom-value"
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM