RFC的に、HTTPヘッダってどんな値を使えるんでしたっけ?のメモ


Web APIHTTPRFC調

HTTP/1.1RFC


HTTP/1.1RFCRFC26162014RFC723072392616


RFC2616

 -- HTTP/1.1



RFC7230RFC2739

HTTP/1.1  RFC 7230  7235  




RFC 723xContent-MD5723x


HTTP/1.1  | The Long Wait

HTTP // Speaker Deck

LWSHTTP | MBSD Blog

RFC使


RFC 7230ABNF
     header-field   = field-name ":" OWS field-value OWS

     field-name     = token
     field-value    = *( field-content / obs-fold )
     field-content  = field-vchar [ 1*( SP / HTAB / field-vchar )
                      field-vchar ]
     field-vchar    = VCHAR / obs-text

     obs-fold       = OWS CRLF 1*( SP / HTAB )
                    ; obsolete line folding
                    ; see Section 3.2.4




token

"!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA

(VCHAR)



VCHAR

%x21-7E (US-ASCII US-ASCII)



obs-text

%x80-FF (US-ASCII)

obs-text(obs-fold)





箇所 利用可能文字種
ヘッダ名(field-name) token (アルファベット、数字、一部の記号)
ヘッダ値(firld-value) US-ASCII文字 印字可能なUS-ASCII

US-ASCII US-ASCII(%x21-7E)21-7E (man ascii)
     00 nul   01 soh   02 stx   03 etx   04 eot   05 enq   06 ack   07 bel
     08 bs    09 ht    0a nl    0b vt    0c np    0d cr    0e so    0f si
     10 dle   11 dc1   12 dc2   13 dc3   14 dc4   15 nak   16 syn   17 etb
     18 can   19 em    1a sub   1b esc   1c fs    1d gs    1e rs    1f us
     20 sp    21  !    22  "    23  #    24  $    25  %    26  &    27  '
     28  (29)    2a  *    2b  +    2c  ,    2d  -    2e  .    2f  /
     30  0    31  1    32  2    33  3    34  4    35  5    36  6    37  7
     38  8    39  9    3a  :    3b  ;    3c  <    3d  =    3e  >    3f  ?
     40  @    41  A    42  B    43  C    44  D    45  E    46  F    47  G
     48  H    49  I    4a  J    4b  K    4c  L    4d  M    4e  N    4f  O
     50  P    51  Q    52  R    53  S    54  T    55  U    56  V    57  W
     58  X    59  Y    5a  Z    5b  [    5c  \    5d  ]    5e  ^    5f  _
     60  `    61  a    62  b    63  c    64  d    65  e    66  f    67  g
     68  h    69  i    6a  j    6b  k    6c  l    6d  m    6e  n    6f  o
     70  p    71  q    72  r    73  s    74  t    75  u    76  v    77  w
     78  x    79  y    7a  z    7b  {    7c  |    7d  }    7e  ~    7f del


RFC2616Studying HTTP


http://www.eonet.ne.jp/~h-hash/header.html#Abstract

http://www.eonet.ne.jp/~h-hash/header.html#Utf8InParam


RFC2616field-valueTEXT(OCTET)使TEXTUS-ASCII使RFC20472047 UTF-8

 Content-Disposition RFC5987UTF-8Content-Disposition使=使

 Rails - Content-Disposition  - Qiita 
 Content-Disposition: attachment; filename*=UTF-8''foo-%c3%a4-%e2%82%ac.html

RFC7230

US-ASCII  [RFC5987] RFC 7231  HTTP/1.1: Semantics and Content 



HTTP  ISO-8859-1 charset [ISO-8859-1]  charset  [RFC2047]   HTTP  US-ASCII charset [USASCII]   US-ASCII     obs-text   RFC 7230  HTTP/1.1: Message Syntax and Routing 

RFC2616RFC2047RFC5987US-ASCII

RFC



X-Foo: Bar
X-Foo: Baz

RFC7230 Section 3.2.2 






Set-Cookie

RFCCRLF(\r\n)


CRLF


RFCLF

RF


 LWSHTTP | MBSD Blog

RFC


RFC2616LWS使 LWS(+)2X-Foo
X-Foo: Foo
[sp] X-Bar: Bar

IE11LWS2RFC7230LWSobs-fold(message/http)


obs-foldfield-value

400 Bad Requestobs-foldSP()

UAobs-foldSP()



Gonet/httpLWS


HTTPHTTPfield-value(CR, LF)(http.Header.WriteSubset() at net/http/header.go) HTTPLWS(RFC7230) SP調

RFC


PUT

 PUT   RFC 7231  HTTP/1.1: Semantics and Content 

2015/8/4