[11] [DFN[起源サーバー]]は、
[[要求]]を処理して[[応答]]を自身で作成できる[[HTTPサーバー]]です。

* 仕様書

[REFS[
- [2] [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#section-2.1>
]REFS]

* 意味

[3] [DFN[[RUBYB[[[起源鯖]]]@en[origin server]]]]とは、
ある[RUBYB[[[対象資源]]]@en[target resource]]について[RUBYB[権威ある]@en[authoritative]][[応答]]を[RUBYB[生成]@en[originate]]することができる[[プログラム]]をいいます
[SRC[>>2]]。

** 起源サーバーとプロキシ


[7] [[鯖]]には[[起源鯖]]の他に[[串]]などの[[中間器]]があります。
場合によっては[[対象資源]]によって[[起源鯖]]として動作したり、[[中間器]]として動作したりする[[鯖]]もあります。

[EG[
[8] 例えば [CODE[/]] へのアクセスは直接[[ファイルシステム]]から提供する[[起源鯖]]として動作し、
[CODE[/app/]] へのアクセスは[[アプリケーション鯖]]に[[転送]]する[[逆串]]として動作する[[鯖]]があるかもしれません。
]EG]

[EG[
[9] 例えば [CODE[//[[localhost]]/]] 
へのアクセスは[[鯖]]の組み込みの機能により[[応答]]する[[起源鯖]]として動作し、
それ以外の [[host]] へのアクセスは指定した [[host]] に[[転送]]する[[串]]として動作し、
[CODE(HTTP)@en[[[CONNECT]]]] [[メソッド]]の[[要求]]に対しては[[トンネル]]として動作する[[鯖]]があるかもしれません。
]EG]

[10] [[逆プロキシ]]があり得るため、
外部の者が真の[[起源サーバー]]かどうかはわからないことになります。

[12] 実用上は、[[プロキシ]]や[[逆プロキシ]]と区別するため、
普通の[[HTTPサーバー]]を指して[[起源サーバー]]と呼んでいます。

* 関連

[4] [[RFC 7230]] の定義では、厳密には[[起源鯖]]は[[鯖]]とは限らないことになります。

;; [6] が意図したものなのかは不明です。実際上は[[起源鯖]]は[[鯖]]です。

-*-*-

[5] [[HTTP]] の[[起源鯖]]と [[Webセキュリティーモデル]]における[RUBYB[[[起源]]]@en[origin]]には、
直接の関係はありません。

* 歴史

[FIG(quote)[
[FIGCAPTION[
[[HTTP]] ([[RFC 1945]] 1.2, [[RFC 2068]] 1.3, [[RFC 2616]] 1.3)
]FIGCAPTION]
[1] 
>
:origin server: The server on which a given resource resides or is to be created.

:起点鯖: 当該[[資源]]が在する、あるいは作成される[[サーバー]]。
]FIG]
