-
Notifications
You must be signed in to change notification settings - Fork 4
/
843.txt
74 lines (53 loc) · 3.48 KB
/
843.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[8] [DFN[PSGI]] は、 [[Perl]] における [[HTTPサーバー]]と [[Webアプリケーション]]との[[インターフェイス]]の[[仕様]]です。
[TIME[2009年][year:2009]]に [[Tatsuhiko Miyagawa]] らにより制定、実装されました。
[9] [[WSGI]] に強い影響を受けており、これを [[Perl]] に移植したものとなっています。
[10] 現在では多くの [[Perl]] の [[HTTPサーバー]]や [[Webアプリケーション]]が対応しています。
* 仕様書
[REFS[
- [4] [CITE[PSGI - search.cpan.org]]
([TIME[2012-02-16 22:39:56 +09:00]] 版)
<http://search.cpan.org/dist/PSGI/PSGI.pod>
]REFS]
* プロトコル
[16]
[FIG(short list)[
- [[PSGIアプリケーション]]
]FIG]
[11] [RUBYB[[[環境]]]@en[environment]]は、
[[CGI]] の[[メタ変数]]の流れを汲む[[ハッシュ参照]]で、
[[HTTPサーバー]]から [[Webアプリケーション]]への伝達に使われます。
** 限界
[12] [[サーバー]]と[[アプリケーション]]の責務が明確に定められていません。例えば、
[[ヘッダー値]]に不適切な[[改行]]が含まれると [[HTTPメッセージ]]として正しく解釈できなくなり、
ときに[[セキュリティー]]の問題を引き起こすことがありますが、
これをどちらが保証するべきなのか、[[サーバー]]だとしたらどのように処理するべきなのか
(黙って訂正するべきなのか、何らかの方法でエラーとするべきなのか)
がはっきりしていません。
[13] [[HTTP]] の機能のうち、 [[理由句]]には対応していません。
[[CGI]] その他の既存の手法に対する明白な欠点です。
[14] [[WebSocket]] を扱うことができません。いくつかの実装は [[ad hoc]]
な対応をしていますが、標準化されていないだけでなく強引な方法を採っています。
[18] [CODE[CONNECT]] を扱うことができません。
[15] [[server push]] を扱うことができません。
[17] [[要求]]の受信中に[[クライアント]]との[[接続][HTTP接続]]が切断された場合や、
長い処理の途中で[[サーバー]]が[[再起動]]されようとしている時など、
中断した方が良いかもしれない場合にその旨を[[サーバー]]から[[アプリケーション]]に伝達する手段がありません。
* 歴史
[1] [CITE[PSGI 計画についてのおしらせ。for Japanese Perl Mongers - TokuLog 改めB日記]]
([TIME[2009-09-08 09:30:30 +09:00]] 版)
<http://d.hatena.ne.jp/tokuhirom/20090904/1252091316>
[2] [CITE[PSGI updates: Specs and more reference implementations - bulknews.typepad.com]]
([TIME[2009-09-08 09:40:48 +09:00]] 版)
<http://bulknews.typepad.com/blog/2009/09/psgi-updates-specs-and-more-reference-implementations.html>
[3] [CITE[PSGI - Perl WSGI - bulknews.typepad.com]]
([TIME[2009-09-08 09:44:48 +09:00]] 版)
<http://bulknews.typepad.com/blog/2009/09/psgi-perl-wsgi.html>
[5] [CITE[Feersum - search.cpan.org]]
( ([TIME[2014-10-21 03:49:05 +09:00]] 版))
<http://search.cpan.org/dist/Feersum/lib/Feersum.pm#PSGI_extensions>
[6] [CITE@en[debug-ito/Plack-App-WebSocket]]
([TIME[2015-04-17 15:12:33 +09:00]] 版)
<https://github.com/debug-ito/Plack-App-WebSocket>
[7] [CITE[PSGIアプリでWebSocketを使う場合、responderはどうすべきか? - DebugIto’s diary]]
([TIME[2015-04-17 15:14:38 +09:00]] 版)
<http://d.hatena.ne.jp/debug-ito/20131110/1384067449>