在代理中获取标头值

getting headers value in proxygen

本文关键字:获取 代理      更新时间:2023-10-16

我正在使用代理来制作一个简单的Web服务器。 我被限制使用代理。我正在使用proxygen默认回显服务器示例,我想在将请求发送到服务器时打印标头值。下面是我认为应该修改的代码,但我不确定到底是什么。

#include "customHandler.h"
#include <iostream>
#include <proxygen/httpserver/RequestHandler.h>
#include <proxygen/httpserver/ResponseBuilder.h>
#include <proxygen/lib/http/HTTPMessage.h>
#include <proxygen/lib/http/HTTPMethod.h>
using namespace std;
using namespace proxygen;
namespace EchoService {
EchoHandler::EchoHandler(EchoStats* stats): stats_(stats) {
}
void EchoHandler::onRequest(std::unique_ptr<HTTPMessage> headers) noexcept {
  //------------------HERE TO MODIFY I THINK-------------------//
}
void EchoHandler::onBody(std::unique_ptr<folly::IOBuf> body) noexcept {
  if (body_) {
    body_->prependChain(std::move(body));
  } else {
    body_ = std::move(body);
  }
}
/*
.header("Request-Number",
            //this sets the request number
            folly::to<std::string>(stats_->getRequestCount()),"test-b")*/
void EchoHandler::onEOM() noexcept {
  ResponseBuilder(downstream_)
    .status(200, "OK")
    //Response is set Here...........ex-> .body(std::move("some Response object"))
    .body(std::move(body_))
    .sendWithEOM();
}
void EchoHandler::onUpgrade(UpgradeProtocol protocol) noexcept {
  // handler doesn't support upgrades
}
void EchoHandler::requestComplete() noexcept {
  delete this;
}
void EchoHandler::onError(ProxygenError err) noexcept {
  delete this;
}
}

如果我错了,请纠正我。

试试这个:

void EchoHandler::onRequest(std::unique_ptr<HTTPMessage> headers) noexcept
{   
    HTTPHeaders head = headers->getHeaders();
    head.forEach([&] (const string& header, const string& val) {
          cout << header << ": " << val<<endl;
    });
}