Ogólne#
Headers#
W tym miejscu umieszczam powtarzające się specyficzne pojęcia i algorytmy w interfejsie Headers.
Pojęcia#
header list
Obiekt implementujący interfejs Headers jest skojarzony z listą nagłówków # (header list) [jakaś lista nagłówków], która początkowo jest pusta.
guard
Obiekt implementujący interfejs Headers jest skojarzony ze strażnikiem # (guard), którym jest jeden z immutable, request, request-no-CORS, response lub none (początkowo jest nim none).
Wariant immutable istnieje dla wątków serwisu.
Algorytmy#
fill
Aby wypełnić # (fill) obiekt implementujący interfejs Headers headers z użyciem obiektu object należy wykonać następujące kroki:
- Jeśli object jest obiektem typu
Headers
, to skopiuj jego listę nagłówków do headerListCopy, a następnie dla każdego nagłówka header w headerListCopy, z zachowaniem kolejności, dodaj parę nazwa z header/wartość z header do headers. Zrzuć ponownie każdy wyjątek. W przeciwnym razie, jeśli object jest sekwencją, to dla każdego nagłówka header w object wykonaj poniższe podkroki:
W przeciwnym razie, jeśli object jest nieograniczonym słownikiem, to dla każdego nagłówka header w object wykonaj poniższe podkroki:
- Ustaw klucz w header na wynik konwersji do ByteString z przekazaniem klucza w header. Zrzuć ponownie każdy wyjątek.
- Dodaj parę klucz z header/wartość z header do headers. Zrzuć ponownie każdy wyjątek.
append
Aby dodać # (append) parę nazwa/wartość name/value do obiektu implementującego interfejs Headers headers należy wykonać następujące kroki:
- Jeśli name nie jest nazwą lub value nie jest wartością, to zrzuć błąd JavaScript
TypeError
. - Jeśli strażnikiem jest immutable, to zrzuć błąd JavaScript
TypeError
. - W przeciwnym razie, jeśli strażnikiem jest request i name jest zabronioną nazwą nagłówka, to powróć (return).
- W przeciwnym razie, jeśli strażnikiem jest request-no-CORS i para name/value nie jest nagłówkiem prostym, to powróć (return).
- W przeciwnym razie, jeśli strażnikiem jest response i name jest zabronioną nazwą nagłówka odpowiedzi, to powróć (return).
- Dodaj parę name/value do listy nagłówków skojarzonej z headers.