Lines Matching +full:- +full:validation +full:- +full:settings
5 ------------
25 own HTTP/1 stack or use existing third-party library, and bind them
39 most event-based architecture applications use is single thread per
78 --------
88 -------
99 applications are responsible to send SETTINGS frame as part of
106 .. _http-messaging:
109 --------------
113 <https://tools.ietf.org/html/rfc7540#section-8>`_. Everything
121 client and server model of HTTP. That is, even if the validation is
136 frames containing non-final response (status code 1xx). They are
138 (non-1xx). It is followed by zero or more DATA frames containing
140 trailer headers. The non-final and final response headers must
147 HTTP/2 prohibits connection-specific header fields. The following
148 header fields must not appear: "Connection", "Keep-Alive",
149 "Proxy-Connection", "Transfer-Encoding" and "Upgrade". Additionally,
152 Each header field name and value must obey the field-name and
153 field-value production rules described in `RFC 7230, section
154 3.2. <https://tools.ietf.org/html/rfc7230#section-3.2>`_.
163 allowed in ":path" pseudo header field to represent system-wide
170 nghttp2 enforces "Content-Length" validation as well. All request or
171 response headers must not contain more than one "Content-Length"
172 header field. If "Content-Length" header field is present, it must be
174 following DATA frames must match with the number in "Content-Length"
177 RFC 7230 says that server must not send "Content-Length" in any
179 "Content-Length" is not allowed in any response with 200 status code
187 ----------------------------------------------
197 The urgent category includes PING and SETTINGS. They are sent with
200 The regular category includes frames other than PING, SETTINGS, DATA,
223 .. code-block:: c
235 Implement user defined HTTP/2 non-critical extensions
236 -----------------------------------------------------
238 As of nghttp2 v1.8.0, we have added HTTP/2 non-critical extension
240 HTTP/2 non-critical extension frames. nghttp2 also offers built-in
242 (e.g., ALTSVC frame). For these built-in handler, refer to the next
254 .. code-block:: c
264 const alt_svc *altsvc = (const alt_svc *)frame->ext.payload;
265 size_t originlen = strlen(altsvc->origin);
266 size_t fieldlen = strlen(altsvc->field);
277 memcpy(p, altsvc->origin, originlen);
279 memcpy(p, altsvc->field, fieldlen);
282 return p - buf;
288 .. code-block:: c
295 .. code-block:: c
326 .. code-block:: c
380 fieldlen = end - field;
383 altsvc->origin = origin;
384 altsvc->originlen = originlen;
385 altsvc->field = field;
386 altsvc->fieldlen = fieldlen;
397 .. code-block:: c
409 available as ``frame->ext.payload``:
411 .. code-block:: c
416 switch (frame->hd.type) {
419 alt_svc *altsvc = (alt_svc *)frame->ext.payload;
421 fprintf(stderr, " origin: %.*s\n", (int)altsvc->originlen, altsvc->origin);
422 fprintf(stderr, " field : %.*s\n", (int)altsvc->fieldlen, altsvc->field);
434 .. code-block:: c
441 .. code-block:: c
445 How to use built-in HTTP/2 extension frame handlers
446 ---------------------------------------------------
455 To receive ALTSVC frame through built-in functionality, application
459 .. code-block:: c
470 than using built-in handler.
475 .. code-block:: c
483 -----------------
489 value of 1 via `nghttp2_submit_settings()`. This settings ID is
490 defined by :rfc:`9218`. The sender of this settings value disables
510 value of 1. Until it receives the first server SETTINGS frame, it can
514 will be sent in anyway since it is an end-to-end signal. If
517 :rfc:`9218#section-2.1.1`.
526 SETTINGS_NO_RFC7540_PRIORITIES in its SETTINGS frame.