'How to remove/delete (not reset or modify) response headers in hapi.js

Able to modify the response headers with onPreHandler/onPostHandler extention in hapi js. But not able to delete the key, value pair entirely. How to delete/remove response headers without setting it's value to null or undefied.

server.ext("onPreResponse", async (request, h) => {
    if (request.response.isBoom) {
      request.response.output.headers["server"] = "";
      request.response.output.headers["x-powered-by"] = "";
    } else {
      if (request.response && request.response.headers) {
        request.response.header("server", "");
        request.response.header("x-powered-by", "");
      }
    }
    return h.continue;
});


Solution 1:[1]

Since request.response.output.headers & request.response.header are of {} you can use delete operator to delete the key

delete request.response.output.headers["server"];
delete request.response.output.headers["x-powered-by"];

Or

delete request.response.headers["server"];
delete request.response.headers["x-powered-by"];

Code:

server.ext("onPreResponse", async (request, h) => {
    if (request.response.isBoom && request.response.output && request.response.output.headers) {
      delete request.response.output.headers["server"];
      delete request.response.output.headers["x-powered-by"];
    }
    else if (request.response && request.response.headers) {
        delete request.response.header["server"];
        delete request.response.header["x-powered-by"];
    }
    return h.continue;
});

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Chandan