Forum Discussion
add HTTP Header
Please paste full configuration of your 0.0.0.0/0 VS. There are many ways the routing can be done.
- Kevin_StewartOct 17, 2022
Employee
You shouldn't need to do an HTTP::collect to handle response headers. Those can be seen and manipulated directly within the HTTP_RESPONSE event.
- Chris_BatesOct 18, 2022
Nimbostratus
Okay, so would HTTP::collect be required in the HTTP_RESPONSE_DATA? or can they still be seen?
The response data stays the exact same:
{"result":{"pathTo3DJSON":"/PackWorks/tempfiles/DOC2865386461295932248/data.cbor"}}}}
with or without the iRule even though we are supposedly replacing the 4 closing brackets with 2...
- Kevin_StewartOct 18, 2022
Employee
I'm saying that if you need to change HTTP headers, you don't need to do an HTTP::collect and handle in HTTP_RESPONSE_DATA. The headers will be available in the HTTP_RESPONSE event. You would do an HTTP::collect if you're trying to replace text in the response payload (after the headers).
But I see maybe you're trying to replace headers AND payload. Again, headers are visible in HTTP_RESPONSE, so change those there. For the payload, without testing I'm assuming there's just something incorrect about your string replace logic. The following works for me to replace the ending "}}}}":
when HTTP_REQUEST { set doWrite 0 if { [string tolower [HTTP::path]] eq "/website/generate3dview.wcr" } { set doWrite 1 } } when HTTP_RESPONSE { if { ( [info exists doWrite] ) and ( $doWrite ) } { HTTP::collect [HTTP::header Content-Length] set clen [HTTP::header Content-Length] set doWrite 0 } } when HTTP_RESPONSE_DATA { set payload [string map [list "\}\}\}\}" "\}\}"] [HTTP::payload]] HTTP::payload replace 0 $clen $payload HTTP::release }