Skip to content

How to modify HTTP header "Content-Length" in onRequestBody/onResponseBody #146

Open
@coolg92003

Description

@coolg92003

Current, I use WASM to modify request/response body: a

  1. Assume the orignal message body:
    {"name":"cliff"}
    'content-length', '16'
  2. in onRequestBody()
    After modify, then the body size will be below 3 conditions:
  3. the new body size == the original body size, Perfect
    in server side, got {"name":"world"}
  4. the new body size > the original body size, this is also Ok, my solution is to remove "Content-Length" unconditionally when calling onRequestHeader()
    in server side, got {"name":"hello world"}
  5. the new body size > the original body size
    I Can't handle this case.
    in server side, got {"name":"leo"}f"}, the additional ff is there
    the ugly way is to set requestbody from<f"}>, then server side get <{"name":"leo"} >
    then server side got extra 3 spaces.
    Therefore, would you help provide one way to modify the "Content-Length" in onRequestBody/onResponseBody after modify the message body.

Below is code:
//std::string l_new_data("{"new_data":"new_data_value_add_by_cliff"}");
std::string l_new_data("{"new":"new"}");
size_t l_new_size = l_new_data.size();
WasmResult l_set_result = setBuffer(WasmBufferType::HttpRequestBody, 0, l_new_size, l_new_data, &l_new_size);
LOG_TRACE(std::string(HSSC) + std::string("set status=") + (l_set_result == WasmResult::Ok ? std::string("Ok"):std::string("Not_ok")));
LOG_TRACE(std::string(HSSC) + std::string("After setBuffer(") + l_new_data + std::string("), pReqBodyBuffSize=")
+ std::to_string(pReqBodyBuffSize) + std::string(" and newbuff size=") + std::to_string(l_new_size));

Notes: no matter which way below, it doesn't work
//addRequestHeader("Content-Length", std::to_string(l_new_size));
//removeRequestHeader("Content-Length");

thanks
Cliff

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions