embOS / IP Webサーバ
embOS / IPのWebサーバ
embOS / IP WebサーバはスタックにHTTPプロトコルを追加するオプションの拡張です。それは、小さなメモリフットプリントとパフォーマンスの最大を兼ね備えています。Webサーバは、組み込みシステムが動的に生成されたコンテンツでWebページを提示することができます。複数の接続、認証、フォームや低RAMの使用量:一般的には、組込みシステムに必要なすべての機能が付属しています。RAMの使用量は、スマートバッファ処理によって最小限に抑えられている。 Webサーバは、コメント(RFC)の次のリクエストの関連する部分を実装しています。
|
||||||||||||
機能リスト
|
||||||||||||
要件TCP / IPスタックembOS / IP Webサーバは、TCP / IPスタックが必要です。それはembOS / IP用に最適化されていますが、任意のRFC準拠のTCP / IPスタックを使用することができます。出荷は、標準のWinsock APIとembOS / IPのソケットAPIを使用して実装を使用するWin32のシミュレーションが含まれています。 タスキング、マルチWebサーバは別のスレッドとして実行する必要があります。そのため、マルチタスクシステムはembOS / IPのWebサーバを使用するために必要です。 HTTPの背景HTTPはもともとハイパーテキストのページを経由して情報を転送するために設計された通信プロトコルです。HTTPの開発は、IETF(インターネットエンジニアリングタスクフォース)とW3C(World Wide Webコンソーシアム)によって調整されます。現在のプロトコルバージョンは1.1です。 HTTP通信の基礎HTTPは、チャレンジと応答プロトコルです。クライアントは、WebサーバへのTCP接続を開始し、HTTP要求を送信します。HTTPリクエストは、メソッドトークンで開始されます。[RFC 2616]は8メソッドのトークンを定義します。メソッドトークンは要求されたリソース上で実行されるメソッドを示します。embOS / IPのWebサーバは通常、組み込みWebサーバが必要とするすべてのメソッドをサポートしています。
次の例は、クライアント(たとえば、192.168.1.75)がembOS / example.htmlハイパーテキストのページのためのIPのWebサーバに要求のHTTPセッション、の部分を示しています。 example.html GET / HTTP/1.1 すべての応答メッセージの最初の行は、数値のステータスコードに続くプロトコルバージョンから構成される、ステータスラインです。ステータスラインは、コンテンツタイプ、サーバ、有効期限と転送エンコーディングが続いている。サーバの応答が転送されるべきコンテンツの長さが続く、空行で終わります。長さはバイト単位でWebページの長さを示します。 HTTP/1.1 200 OK その後、Webサーバは、クライアントに要求されたハイパーテキストのページを送信します。空行が続くのWebページの末尾のゼロは、要求されたWebページの送信が完了したことをsignalizes。 ウェブサイト:example.htm |
RFC | 説明 |
[RFC 2617] | HTTP認証:BasicおよびDigestアクセス認証 の直接リンク:http://tools.ietf.org/html/rfc2617 |
"基本"認証スキームは、クライアントがユーザーIDおよび各レルムのパスワードを使用して自身を認証しなければならないというモデルに基づいています。realm値は、そのサーバー上の他の領域と等しいかどうかを比較することができる不透明な文字列を考慮する必要があります。サーバは、Request - URIの保護空間用のユーザIDとパスワードを検証できる場合にのみ、要求を処理します。は、オプションの認証パラメータはありません。保護空間内のURIに対して、未認証のリクエストを受け取ると、サーバは以下のような課題に応答する必要があります。
WWW認証:基本レルムは="embOS / IP組み込みWebサーバ"
ここで、"embOS / IPの組み込みWebサーバーは、"Request - URIの保護空間を識別するためにサーバによって割り当てられた文字列です。認可を受信するには、クライアントが資格にbase64でエンコードされた文字列内で、単一のコロン(":")文字で区切られた、ユーザIDとパスワードを送信します。ユーザエージェントがユーザID"user"とパスワード"pass"を送信したい場合には、以下のヘッダフィールドを使用します。
承認:基本dXNlcjpwYXNz
認証の例
クライアントが認証を必要とするリソースを要求します。
GET / confに/ Authen.htm HTTP/1.1
ホスト:192.168.1.75
サーバは"401 Unauthorized"というステータスページを使用して要求に答えます。401エラーページのヘッダーには、addionalラインのWWW - Authenticate含まれています。それは適切なユーザ名とパスワードがクライアント(たとえば、Webブラウザ)から送信されるべきレルムが含まれています。
HTTP/1.1 401不正な
日付:Mon、2008年2月4日午前17時00分44秒GMT
サーバ:embOS / IP
Accept -レンジ:バイト
Content - Length:695
接続:近い
Content - Type:text / htmlの
X -パッド:ブラウザのバグを避けるため
WWW - Authenticate:基本領域="embOS / IPの組み込みWebサーバ" 401不正
401不正 ブラウザではない認証-対応または認証が失敗しました。
クライアントは、ヘッダを解釈し、リソースのレルムに対してユーザー名とパスワードの組み合わせを入力するダイアログボックスが開きます。
要求されたレルムの適切なユーザー名/パスワードの組み合わせを入力し、[OK]ボタンで確定。クライアントは、base64エンコードされた文字列と、再度リソースを要求するユーザ名/パスワードの組み合わせをエンコードします。認可::基本dXNlcjpwYXNzリクエストヘッダは、次の行によって強化されています
/ confに/ Authen.htm HTTP/1.1 GET、
192.168.1.75:ホスト
認証:基本dXNlcjpwYXNz
領域の定義されたユーザー名/パスワードの組み合わせにデコードされた文字列が一致すればサーバをデコードユーザー名/パスワードの組み合わせとチェック。文字列が同一である場合、サーバはページを提供します。文字列が同一でない場合、サーバは"401 Unauthorized"というステータスページで再度回答します。
HTTP/1.1 200 OK
Content - Type:text / html
サーバー:embOS / IP
有効期限:木、1995年10月26日00:00:00 GMT
Transfer - Encoding:チャンク化された 200 ウェブサーバ設定 0
認証の設定
embOS / IPのWebサーバはそれを返す前にすべてのリソースのアクセス権をチェックします。ユーザーは、Webサーバーのリソースの異なる部分を分離するために別のレルムを定義することができます。WEBS_ACCESS_CONTROL構造体の配列は、ユーザのアプリケーションで実装する必要があります。WEBS_ACCESS_CONTROLの構造体の要素の詳細については、164ページの構造WEBS_ACCESS_CONTROLを参照してください。認証を使用しないする必要がある場合、配列はルートのパスの1つだけのエントリが含まれています。
WEBS_ACCESS_CONTROL _aAccessControl [] = {
{"/"、NULL、NULL}、
0
};
領域"conf"を定義するには、追加のWEBS_ACCESS制御エントリは、実装する必要があります。
WEBS_ACCESS_CONTROL _aAccessControl [] = {
{"/ confに/"、"設定のためのログイン"、"user:pass"}、
{"/"、NULL、NULL}、
0
};
文字列"構成のためのログインは、"レルムを定義します。"user:passはは"一つの文字列に格納されているユーザー名/パスワードの組み合わせです。
フォームの処理
embOS / IPのWebサーバは両方のPOSTをサポートし、クライアントからフォームデータを受信するためのアクションを取得します。POSTは、識別されたリソースに処理するデータを送信します。データは、要求の本体に含まれています。唯一のリソースを要求するために使用される通常ですが、それは、Webアプリケーション内のアクションのためにGETを使用することも可能になってしまう。サーバ側のデータ処理は、新しいリソースを作成するか、既存のリソースまたは両方を更新する可能性があります。
すべてのHTMLフォームでは、これらの入力の各項目は、名前のタグを持つテキストフィールドなどの入力項目、ボタン、チェックボックスなどで構成されています。ユーザーがフォームでこれらの項目にデータを置くと、その情報がフォームデータにエンコードされます。フォームデータは"&"文字で区切られた = ペアのストリームです。 入力項目のそれぞれがユーザーによって指定された値は値と呼ばれています。 = ペアをURLエンコードされ、これはスペースが"+"に変更され、特殊文字を十六進値にエンコードされていることを意味します。 [RFC 1738]を参照してURLエンコーディングの詳細については。フォームデータの解析とデコードがembOS / IPのWebサーバによって処理されます。その後、サーバはパラメータとしてデコードされ、解析された文字列でコールバック関数を呼び出します。コールバック関数を実装する責任はユーザー側にあります。
簡単なフォーム処理のサンプル
次の例では、WebサーバーのアプリケーションとHTMLフォームの出力の処理を示しています。例のWebページのExampleGET.htmは、3入力、2つのテキストフィールドとボタン1つでフォームを実装しています。
それがサーバーに追加されるWebページのHTMLコードは次のとおりです。
embOS / IPのWebサーバのフォームの例
192.168.1.75:ホスト
認証:基本dXNlcjpwYXNz
Content - Type:text / html
サーバー:embOS / IP
有効期限:木、1995年10月26日00:00:00 GMT
Transfer - Encoding:チャンク化された 200 ウェブサーバ設定 0
{"/"、NULL、NULL}、
0
};
{"/ confに/"、"設定のためのログイン"、"user:pass"}、
{"/"、NULL、NULL}、
0
};
embOS / IPのWebサーバのフォームの例