mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-01 15:55:28 +00:00
update raw export to not remove headers (#4181)
This commit is contained in:
parent
f1287012b4
commit
2aacf94a63
@ -11,6 +11,7 @@ Unreleased: mitmproxy next
|
||||
* Display HTTP trailers in mitmweb (@sanlengjingvv)
|
||||
* Revamp onboarding app (@mhils)
|
||||
* Add ASGI support for embedded apps (@mhils)
|
||||
* Updated raw exports to not remove headers (@wchasekelley)
|
||||
|
||||
* --- TODO: add new PRs above this line ---
|
||||
|
||||
|
@ -18,7 +18,11 @@ def cleanup_request(f: flow.Flow) -> http.HTTPRequest:
|
||||
assert isinstance(f, http.HTTPFlow)
|
||||
request = f.request.copy()
|
||||
request.decode(strict=False)
|
||||
# a bit of clean-up - these headers should be automatically set by curl/httpie
|
||||
return request
|
||||
|
||||
|
||||
def pop_headers(request: http.HTTPRequest) -> http.HTTPRequest:
|
||||
# Remove some headers that are redundant for curl/httpie export
|
||||
request.headers.pop('content-length')
|
||||
if request.headers.get("host", "") == request.host:
|
||||
request.headers.pop("host")
|
||||
@ -53,6 +57,7 @@ def request_content_for_console(request: http.HTTPRequest) -> str:
|
||||
|
||||
def curl_command(f: flow.Flow) -> str:
|
||||
request = cleanup_request(f)
|
||||
request = pop_headers(request)
|
||||
args = ["curl"]
|
||||
for k, v in request.headers.items(multi=True):
|
||||
if k.lower() == "accept-encoding":
|
||||
@ -70,6 +75,7 @@ def curl_command(f: flow.Flow) -> str:
|
||||
|
||||
def httpie_command(f: flow.Flow) -> str:
|
||||
request = cleanup_request(f)
|
||||
request = pop_headers(request)
|
||||
args = ["http", request.method, request.url]
|
||||
for k, v in request.headers.items(multi=True):
|
||||
args.append(f"{k}: {v}")
|
||||
|
@ -144,6 +144,7 @@ class TestRaw:
|
||||
|
||||
def test_get_request_present(self, get_request):
|
||||
assert b"header: qvalue" in export.raw(get_request)
|
||||
assert b"content-length: 0" in export.raw_request(get_request)
|
||||
|
||||
def test_get_response_present(self, get_response):
|
||||
delattr(get_response, 'request')
|
||||
@ -163,6 +164,7 @@ class TestRaw:
|
||||
class TestRawRequest:
|
||||
def test_get(self, get_request):
|
||||
assert b"header: qvalue" in export.raw_request(get_request)
|
||||
assert b"content-length: 0" in export.raw_request(get_request)
|
||||
|
||||
def test_no_request(self, get_response):
|
||||
delattr(get_response, 'request')
|
||||
|
Loading…
Reference in New Issue
Block a user