You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -273,12 +273,12 @@ Your server MUST listen on **port 8080** and implement these endpoints:
273
273
| Endpoint | Method | Behavior |
274
274
|----------|--------|----------|
275
275
|`/`|`GET`| Return `200 OK`|
276
-
|`/`|`HEAD`| Return `200 OK` with no body |
277
276
|`/`|`POST`| Read the full request body and return it in the response body |
278
-
|`/`|`OPTIONS`| Return `200 OK`|
279
277
|`/echo`|`GET`, `POST`| Return all received request headers in the response body, one per line as `Name: Value`|
280
278
|`/cookie`|`GET`, `POST`| Parse the `Cookie` header and return each cookie as `name=value` on its own line |
281
279
280
+
HEAD and OPTIONS are handled automatically by virtually all frameworks — do not implement them explicitly.
281
+
282
282
The `/echo` endpoint is critical for normalization tests. It must echo back all headers the server received, preserving the names as the server internally represents them.
Copy file name to clipboardExpand all lines: docs/content/docs/rfc-requirement-dashboard.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -110,7 +110,7 @@ The RFC requires rejection, but the mechanism (400 status or connection close) h
110
110
| 57 |`COMP-POST-CL-ZERO`| Compliance |[RFC 9112 §6.2](https://www.rfc-editor.org/rfc/rfc9112#section-6.2)| Content-Length: 0 is a valid 1*DIGIT value. Server **MUST** accept zero-length body. |
111
111
| 58 |`COMP-POST-NO-CL-NO-TE`| Compliance |[RFC 9112 §6.3](https://www.rfc-editor.org/rfc/rfc9112#section-6.3)| "If this is a request message and none of the above are true, then the message body length is zero (no message body is present)." Server **MUST** treat as zero-length. |
112
112
| 59 |`COMP-RANGE-POST`| Compliance |[RFC 9110 §14.2](https://www.rfc-editor.org/rfc/rfc9110#section-14.2)| "A server **MUST** ignore a Range header field received with a request method other than GET." |
113
-
| 60 |`COMP-UPGRADE-HTTP10`|Compliance|[RFC 9110 §7.8](https://www.rfc-editor.org/rfc/rfc9110#section-7.8)| "A server **MUST** ignore an Upgrade header field that is received in an HTTP/1.0 request." |
113
+
| 60 |`WS-UPGRADE-HTTP10`|WebSockets|[RFC 9110 §7.8](https://www.rfc-editor.org/rfc/rfc9110#section-7.8)| "A server **MUST** ignore an Upgrade header field that is received in an HTTP/1.0 request." |
114
114
| 59 |`COMP-CHUNKED-BODY`| Compliance |[RFC 9112 §7.1](https://www.rfc-editor.org/rfc/rfc9112#section-7.1)| "A recipient **MUST** be able to parse and decode the chunked transfer coding." |
115
115
| 60 |`COMP-CHUNKED-MULTI`| Compliance |[RFC 9112 §7.1](https://www.rfc-editor.org/rfc/rfc9112#section-7.1)| Same — multi-chunk is the standard chunked format. **MUST** accept. |
116
116
| 61 |`COMP-CHUNKED-EMPTY`| Compliance |[RFC 9112 §7.1](https://www.rfc-editor.org/rfc/rfc9112#section-7.1)| A zero-length chunked body (just `0\r\n\r\n`) is valid. **MUST** accept. |
@@ -119,9 +119,9 @@ The RFC requires rejection, but the mechanism (400 status or connection close) h
119
119
| 64 |`COMP-CHUNKED-EXTENSION`| Compliance |[RFC 9112 §7.1.1](https://www.rfc-editor.org/rfc/rfc9112#section-7.1.1)| "A recipient **MUST** ignore unrecognized chunk extensions." Server **MUST** accept and ignore. |
120
120
| 65 |`COMP-POST-CL-UNDERSEND`| Compliance |[RFC 9112 §6.2](https://www.rfc-editor.org/rfc/rfc9112#section-6.2)| "If the sender closes the connection or the recipient times out before the indicated number of octets are received, the recipient **MUST** consider the message to be incomplete and close the connection." |
121
121
| 66 |`COMP-CHUNKED-NO-FINAL`| Compliance |[RFC 9112 §7.1](https://www.rfc-editor.org/rfc/rfc9112#section-7.1)| "The message body length is determined by reading and decoding the chunked data until the transfer coding indicates the data is complete." Without a zero terminator, the transfer is incomplete. Server **MUST** not process as complete. |
122
-
| 67 |`COMP-UPGRADE-POST`|Compliance|[RFC 6455 §4.1](https://www.rfc-editor.org/rfc/rfc6455#section-4.1)| "The method of the request **MUST** be GET, and the HTTP version **MUST** be at least 1.1." WebSocket upgrade via POST **MUST** not succeed. |
123
-
| 68 |`COMP-UPGRADE-MISSING-CONN`|Compliance|[RFC 9110 §7.8](https://www.rfc-editor.org/rfc/rfc9110#section-7.8)| "A sender of Upgrade **MUST** also send an 'Upgrade' connection option in the Connection header field." Without Connection: Upgrade, the server **MUST NOT** switch protocols. |
124
-
| 69 |`COMP-UPGRADE-UNKNOWN`|Compliance|[RFC 9110 §7.8](https://www.rfc-editor.org/rfc/rfc9110#section-7.8)| "A server **MUST NOT** switch to a protocol that was not indicated by the client in the corresponding request's Upgrade header field." Unknown protocol — **MUST NOT** return 101. |
122
+
| 67 |`WS-UPGRADE-POST`|WebSockets|[RFC 6455 §4.1](https://www.rfc-editor.org/rfc/rfc6455#section-4.1)| "The method of the request **MUST** be GET, and the HTTP version **MUST** be at least 1.1." WebSocket upgrade via POST **MUST** not succeed. |
123
+
| 68 |`WS-UPGRADE-MISSING-CONN`|WebSockets|[RFC 9110 §7.8](https://www.rfc-editor.org/rfc/rfc9110#section-7.8)| "A sender of Upgrade **MUST** also send an 'Upgrade' connection option in the Connection header field." Without Connection: Upgrade, the server **MUST NOT** switch protocols. |
124
+
| 69 |`WS-UPGRADE-UNKNOWN`|WebSockets|[RFC 9110 §7.8](https://www.rfc-editor.org/rfc/rfc9110#section-7.8)| "A server **MUST NOT** switch to a protocol that was not indicated by the client in the corresponding request's Upgrade header field." Unknown protocol — **MUST NOT** return 101. |
125
125
| 70 |`MAL-NUL-IN-URL`| Malformed |[RFC 9112 §2.2](https://www.rfc-editor.org/rfc/rfc9112#section-2.2)| NUL byte is not valid in any protocol element. Grammar violation — **MUST** reject. |
126
126
| 71 |`MAL-CONTROL-CHARS-HEADER`| Malformed |[RFC 9110 §5.5](https://www.rfc-editor.org/rfc/rfc9110#section-5.5)| "Field values containing CR, LF, or NUL characters are invalid and dangerous... a recipient **MUST** either reject the message or replace each of those characters with SP." (CTL characters outside safe context.) |
@@ -133,7 +133,7 @@ The RFC requires rejection, but the mechanism (400 status or connection close) h
133
133
| 78 |`MAL-URL-OVERLONG-UTF8`| Malformed |[RFC 3629 §3](https://www.rfc-editor.org/rfc/rfc3629#section-3)| "Implementations of the decoding algorithm above **MUST** protect against decoding invalid sequences." Overlong UTF-8 (0xC0 0xAF) is explicitly invalid per RFC 3629. |
134
134
| 79 |`NORM-SP-BEFORE-COLON-CL`| Normalization |[RFC 9112 §5.1](https://www.rfc-editor.org/rfc/rfc9112#section-5)| "A server **MUST** reject, with a response status code of 400 (Bad Request), any received request message that contains whitespace between a header field name and colon." |
135
135
| 80 |`NORM-TAB-IN-NAME`| Normalization |[RFC 9112 §5](https://www.rfc-editor.org/rfc/rfc9112#section-5)|`field-name = token = 1*tchar`. Tab (0x09) is not a tchar. **MUST** reject — invalid token character. |
136
-
| 81 |`COMP-UPGRADE-INVALID-VER`|Compliance|[RFC 6455 §4.4](https://www.rfc-editor.org/rfc/rfc6455#section-4.4)| "If the server doesn't support the requested version, it **MUST** abort the WebSocket handshake." (426 Upgrade Required preferred.) |
136
+
| 81 |`WS-UPGRADE-INVALID-VER`|WebSockets|[RFC 6455 §4.4](https://www.rfc-editor.org/rfc/rfc6455#section-4.4)| "If the server doesn't support the requested version, it **MUST** abort the WebSocket handshake." (426 Upgrade Required preferred.) |
137
137
| 82 |`COMP-UNKNOWN-TE-501`| Compliance |[RFC 9112 §6.1](https://www.rfc-editor.org/rfc/rfc9112#section-6.1)| "A server that receives a request message with a transfer coding it does not understand **SHOULD** respond with 501." Combined with unknown-TE-without-CL making body length indeterminate: **MUST** reject. |
138
138
| 83 |`SMUG-TE-TRAILING-SPACE`| Smuggling |[RFC 9112 §6.1](https://www.rfc-editor.org/rfc/rfc9112#section-6.1)| "chunked " (with trailing space) is not an exact match for the registered coding "chunked". Combined with CL present: "the server **MUST** close the connection after responding." |
139
139
| 84 |`MAL-POST-CL-HUGE-NO-BODY`| Malformed |[RFC 9112 §6.2](https://www.rfc-editor.org/rfc/rfc9112#section-6.2)| "If the sender closes the connection or the recipient times out before the indicated number of octets are received, the recipient **MUST** consider the message to be incomplete and close the connection." |
0 commit comments