ltm rule command HTTP2 push
iRule(1) BIG-IP TMSH Manual iRule(1)
HTTP2::push
Accepts a resource as a parameter that can be pushed to the client
using PUSH_PROMISE frames in HTTP/2 stream.
SYNOPSIS
HTTP2::push PUSH_URI_STRING
('-priority' PRIORITY )?
(('-content' CONTENT ) | ('-ifile' IFILE_OBJ ))?
('-noserver')?
('-nohost')?
(HTTP_HEADER_NAME HTTP_HEADER_VALUE)*
('--')?
(HTTP_HEADER_NAME HTTP_HEADER_VALUE)*
DESCRIPTION
This command has two variants.
The first takes a requested resource, and then sends a PUSH_PROMISE
frame describing that resource to the client. The resource is
requested from the server, and the payload is sent to the client on the
pushed stream.
The second method of using this command describes both the request and
the response. The request is sent as a PUSH_PROMISE to the client, and
the response follows. The server is not contacted, and the content is
pushed directly from the BigIP.
Note that this command may cause iRule events to trigger on the newly
pushed stream. In particular, the HTTP_REQUEST event may fire. The
HTTP::push command will not do anything on a pushed stream.
If the response is generated by the BigIP, then it will have a "Server:
BigIP" header added by default to differentiate replies generated from
the BIG-IP versus those from actual servers. The '-noserver' flag may
be used to suppress this. The "Content-Length" header is computed and
supplied automatically.
By default, a Host header is required on the request. This will be
converted into the corresponding HTTP/2 :authority header in the
PUSH_PROMISE frame. If this is unwanted, then '-nohost' will disable
the checking for that.
Syntax
HTTP2::push [-priority ] [-nohost]
* Generates a push to the client, and asks for the indicated resource from the server. The server-generated resource will be forwarded to the client.
HTTP2::push [-priority ] (-content | -ifile
) [-noserver] [-nohost] --
* Generates a push to the client. Both the pushed request and response are created from the supplied content and header values.
RETURN VALUE
VALID DURING
HTTP_REQUEST
EXAMPLES
Always push "/index.html" on every request. The contents of that file are retrieved from the server.
when HTTP_REQUEST {
HTTP2::push /index.html host example.com
}
Push /test_push.html if /index.html is requested. If /test_push.html is requested by a GET, then use HTTP::respond to generate it.
when HTTP_REQUEST {
set mycontent "HTTP ServerTest Body\n"
if { [HTTP::uri -normalized] equals "/index.html" } {
HTTP2::push /test_push.html -content $mycontent -noserver host example.com test_reqheader test_reqvalue -- test_respheader test_respvalue
}
# Handle a GET
if { [HTTP::uri -normalized] equals "/test_push.html" } {
HTTP::respond 200 -content $mycontent -noserver test_respheader test_respvalue
}
}
HINTS
SEE ALSO
CHANGE LOG
@BIGIP-14.1.0
--First introduced the command.
BIG-IP 2019-05-10 iRule(1)