简体   繁体   中英

How to implement the response to the TRACE request in express.js?

The HTTP TRACE method performs a message loop-back test along the path to the target resource, providing a useful debugging mechanism. The final recipient of the request should reflect the message received back to the client as the message body of a 200 (OK) response with a Content-Type of message/http.

Example of an HTTP request with the TRACE method :
在此处输入图像描述

Example of a response to a request with the TRACE method :
在此处输入图像描述

const path = require( 'path' );
const express = require( 'express' );      // version 4.x
const favicon = require( 'serve-favicon' );

const app = express();

app .use( favicon( path.join( __dirname, 'assets', 'logo.ico' ) ) );

app.trace( '*', ( req, res ) => {
  // how do I return the entire request in its original form in response?
} );

The request argument in Express is actually a modified node.js http.IncomingMessage object so you can get all the request data from it:

app.trace( '*', ( req, res ) => {
    res.end(
        `${req.method} ${req.url} HTTP/${req.httpVersion}\r\n` +
        req.rawHeaders.join('\r\n')
    )
});

This would generally re-create the request but because you are reconstructing it instead of simply copying it there may be small differences.

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