@@ -428,8 +428,52 @@ <h3>Processing model</h3>
428
428
received data, according to the requirements of [[RFC7230]]. If it
429
429
is not possible to construct a complete < a > HTTP request</ a > ,
430
430
the < a > remote end</ a > must either close the < a > connection</ a > ,
431
- return an HTTP response with status code 500, or return
432
- an < a > error</ a > with < a > error code</ a > < a > unknown error</ a > .
431
+ return an HTTP response with status code 500, or < a > send an
432
+ error</ a > with < a > error code</ a > < a > unknown error</ a > , and then
433
+ jump to step 1.
434
+
435
+ < li > < p > < p > If < var > request</ var > has a < a > Host header</ a > ,
436
+ let < var > host</ var > be the value of that header. Otherwise
437
+ let < var > host</ var > be null.</ p > </ li >
438
+
439
+ < li > < p > < p > If < var > request</ var > has an < a > Origin header</ a > ,
440
+ let < var > origin</ var > be the value of that header. Otherwise
441
+ let < var > origin</ var > be null.</ p > </ li >
442
+
443
+ < li > < p > If any of the following conditions hold:</ li >
444
+ < ul >
445
+ < li > < p > < var > host</ var > doesn't match the < code > Host</ code >
446
+ grammar [[RFC7230]]</ p > </ li >
447
+ < li > < p > The result of < a > host parsing</ a > the < code > uri-host</ code >
448
+ part of < var > host</ var > is not an < a > IP address</ a > ,
449
+ a < a > domain</ a > identical to the
450
+ < a > host</ a > of the HTTP server or to another < a > host</ a > the
451
+ implementation has been configured to allow.</ p > </ li >
452
+ < li > < p > The < code > port</ code > part of < var > host</ var > is present
453
+ but doesn't match the port of the HTTP server.</ p > </ li >
454
+ < li > < p > The < code > port</ code > part of < var > host</ var > is not
455
+ present, and the port of the HTTP server doesn't match the
456
+ default port for the request's scheme.</ p > </ li >
457
+ < li > < p > implementation wants to reject
458
+ connections with < var > host</ var > as the < a > Host header</ a > .</ li > </ p >
459
+ </ ul >
460
+ < p > Then < a > send an error</ a > with < a > error code</ a > < a > unknown
461
+ error</ a > , and jump to step 1.</ p >
462
+
463
+ < p class =note > Rejecting connections with unexpected values in the
464
+ < a > Host header</ a > prevents DNS rebinding attacks. Implementations can opt
465
+ to provide more stringent controls where appropriate, for example
466
+ only accepting connections when the < var > host</ var > value
467
+ corresponds to a loopback interface [[RFC5735]].</ p > </ li >
468
+
469
+ < li > < p > If < var > origin</ var > is not null, and is not identical to an
470
+ < a > Origin header</ a > value that the implementation has been
471
+ configured to allow, then stop running these steps and act as if the
472
+ requested service is not available.</ p >
473
+
474
+ < p class =note > Rejecting connections with unexpected values in
475
+ the < a > Origin header</ a > is necessary to prevent untrusted websites
476
+ from establishing a WebDriver session.</ p > </ li >
433
477
434
478
< li > < p > Let < var > request match</ var > be the result of the algorithm
435
479
to < a > match a request</ a > with < var > request</ var > ’s
@@ -10958,6 +11002,16 @@ <h2>Index</h2>
10958
11002
it is supposed that the implementation supports the relevant subsets of
10959
11003
[[RFC7230]], [[RFC7231]], [[RFC7232]], [[RFC7234]], and [[RFC7235]].
10960
11004
11005
+ < dd > < p > The following terms are defined in the Web Origin Concept specification: [[RFC6454]]
11006
+ < ul >
11007
+ <!-- Origin header --> < li > < dfn > < a href ="https://datatracker.ietf.org/doc/html/rfc6454#section-7 "> Origin header</ a > </ dfn >
11008
+ </ ul >
11009
+
11010
+ < dd > < p > The following terms are defined in the Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing specification: [[RFC7230]]
11011
+ < ul >
11012
+ <!-- Host header --> < li > < dfn > < a href ="https://datatracker.ietf.org/doc/html/rfc7230#section-5.4 "> Host header</ a > </ dfn >
11013
+ </ ul >
11014
+
10961
11015
< dd > < p > The following terms are defined in the Cookie specification: [[RFC6265]]
10962
11016
< ul >
10963
11017
<!-- Compute cookie-string --> < li > < dfn > < a href =https://tools.ietf.org/html/rfc6265#section-5.4 > Compute < code > cookie-string</ code > </ a > </ dfn >
0 commit comments