Forum Discussion
Editing JSON HTTP Response
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, 2022Nimbostratus
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, 2022Employee
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 }
- Chris_BatesOct 18, 2022Nimbostratus
And to do the http to https and remove the port I can just do this?
when HTTP_RESPONSE_DATA { regsub "http://" [HTTP::payload] "https://" fixeddata regsub ":80" $fixedddata "" fixeddata1 set payload [string map [list "\}\}\}\}" "\}\}"] [HTTP::payload]] HTTP::payload replace 0 $clen $payload $fixeddata1 HTTP::release }
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com