約 6,921,709 件
https://w.atwiki.jp/katsuhiro/pages/26.html
HTTPメソッド GET情報取得メソッド POST PUT DELETEリソース削除メソッド HTTPリクエスト ポストデータ HTMLのPOST指定のformから送信されるデータ JSPのrequestオブジェクトから下記のメソッドで情報を取得できるgetParameter getParameterValues リクエストボディのセットされて送信される クエリ情報 URLの末尾の"?"以降に「キー=値」のセットで付加される簡易な情報 複数のセットがある場合は" "で連結される URLに直接指定するほか、HTMLのGET指定のformから送信されるデータ formのmethod属性が省略された場合もクエリ情報として送信される JSPのrequestオブジェクトから下記のメソッドで情報を取得できるgetParameter クエリ情報に特殊文字が含まれる場合は、あらかじめエンコードしておく必要がある(form経由の場合はエンコード不要) URLに使用可能な文字数を超えて送信できない(2,083文字)FireFoxの場合は制限が無いが、動作が遅くなる場合もあるらしい データがアドレス欄に露出してしまう ヘッダ情報 「名前: 値」形式 種類一般ヘッダ(要求/応答時双方で利用) エンティティヘッダ(コンテンツに関する情報) リクエスト(要求)ヘッダ(クライアントに関する情報) レスポンス(応答)ヘッダ(その他) JSPのrequestオブジェクトから下記のメソッドで情報を取得できるgetHeaderNames ただし、情報取得専用メソッドが存在するヘッダについてはそちらを使う ■ヘッダ例 種類 ヘッダ名 概要 一般 Cache-Control キャッシュルールを規定する Connection プロキシ(中間)サーバで削除すべきHTTPヘッダを指定 Date コンテンツ生成日時 Pragma キャッシングを利用するか(下位互換用のヘッダ) Transfer-Encoding コンテンツの転送エンコーディング方式 リクエスト Accept クライアント対応コンテンツの種類(優先順) Accept-Language クライアント対応言語(優先順) Authorization 認証情報 Cookie クライアントに保存されたクッキーデータを送信 Host 要求先ホスト名 If-Modified-Since 指定日時以降にコンテンツが更新されている場合にのみ、サーバはデータを送信 Proxy-Authorization プロキシサーバ用の認証情報 Range 要求リソース範囲 Referer リンク元URI User-Agent クライアントの種類 レスポンス ETag リソースを一意に特定するためのキー情報(コンテンツが更新されていないかどうかを特定する場合などに使用) Location クライアントに新しいURIに移動するように促す Server サーバの種類 Set-Cookie クライアントにクッキーを送信 WWW-Authenticate クライアントに認証を要求 エンティティ Content-Encoding コンテンツのエンコーディング方式 Content-Length コンテンツサイズ Content-Type コンテンツの種類 Expires コンテンツの有効期限 Last-Modified コンテンツの最終更新年月日 クッキー サーバがクライアントに対して自由に読み書きできるテキスト クッキーの有効期限負数をセットした場合、ブラウザの終了時に削除される 0をセットした場合、その場で削除される 1以上をセットすると、その秒数分保持される クッキーのデメリットクライアント側でクッキーを受け入れないように設定することが可能 クライアント側でクッキーの改竄や削除が可能 実データがネットワーク上を流れてしまう クッキーの制約1つのホスト、ドメイン当たりの最大個数は20個(総数では300個以内) クッキー1つあたりの最大サイズは4096バイト セッション情報 長期間にわたって情報を保持するには不向き ユーザがブラウザを開いている間だけアプリケーション内で情報を受け渡しする場合にはクッキーより手軽でセキュアな仕組み sessionJSPの暗黙オブジェクトの1つ 下記のメソッドを使って読み書きするgetAttribute setAttribute @pageディレクティブのsession属性がfalseの場合は使えない sessionが不要の場合はsession属性をfalseにしておく(サーバリソースの節約) sessionを使うと… クライアントからサーバにリクエスト送信 サーバからのレスポンスにSet-Cookieヘッダの値としてセッションIDが付加される(JSESSIONID) クライアントからサーバに2回目以降のリクエスト送信時、Cookieヘッダの値として、受け取ったJSESSIONIDを付加して送る サーバをそのセッションIDに該当するセッションを使って処理をし、レスポンスを返す セッションの破棄方法明示的な破棄(session.invalidate()) 有効期限を設定する(session.setMaxInactiveInteval()) web.xmlにセッションの有効期限を設定する session-config session-timeout セッションの寿命明示的に破棄されるか有効期限を過ぎない限り、クライアントを閉じてもサーバ上で生き続ける ieHTTPHeaders http //www.blunck.info/iehttpheaders/iehttpheaders.html ⇒IE上でHTTPによる通信内容をトレースするツール
https://w.atwiki.jp/naobe/pages/78.html
ネットワークに戻る RFC2616概要 HTTP/1.1 RFC6265概要 HTTP状態管理機構 パーセントエンコーディング(URLエンコード) URLで意味を持つコードと混同する日本語などのバイナリや特殊記号を16進形式にして、先頭に%を付加した文字に変換する。正確に言うと、非予約文字、予約文字以外を変換する。 項目 説明 非予約文字 ASCIIのコード範囲内の英字(大文字・小文字)、数字、ハイフン “-”、ピリオド “.”、アンダースコア “_”、チルダ “~” 予約文字 URIを表す符号。ASCIIのコード範囲内のコロン “ ”、スラッシュ “/”、疑問符 “?”、シャープ “#”、角括弧 “[”、“]”、単価記号 “@”、感嘆符 “!”、ドル記号・ペソ記号 “$”、アンパサンド “ ”、アポストロフィー・シングルクオート “ ”、丸括弧 “(”、“)”、アスタリスク “*”、正符号・加算記号 “+”、コンマ “,”、セミコロン “;”、等号 “=” name=%E8%8F%85%E7%9B%B4%E4%BA%BA UTF-8で、%E8%8F%85:菅, %E7%9B%B4 直, %E4%BA%BA 人 x-www-form-urlencoded(URLエンコード) POSTのフォームデータをエンコードする。%を付加する方式は、パーセントエンコーディングと同じ。パーセントエンコーディングの予約文字も変換している スペースは"+"に変換。Javaのソースを見ると、英数字、"-","_", ".","*"以外を変換する BASE64 Wikipediaより データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式 7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている A–Z, a–z, 0–9 までの62文字と、記号2つ (+ , /) 、さらにパディング(余った部分を詰める)のための記号として = が用いられる 76文字ごとに改行コードが入る Cookie Wikipediaより クッキーを設定する際、どの要求に対してクッキー情報を送り返すのか、URLの範囲を指定する。 規定値は、クッキーを設定したサーバに対するすべての要求であり、対象を広げることも狭めることもできる。ただし広げる場合でも、トップレベルドメインより狭い範囲でなければならない。 またクッキーの有効期限は、通常はブラウザを終了するまでだが、指定した期限まではブラウザを再度起動しても保持されるように設定することができる。有効期限の情報も、サーバからブラウザにクッキー情報を送信する段階で付加される。 無期限という設定は出来ない。 詳細: http //www.studyinghttp.net/cookies リクエスト 全てテキスト。行(CRLF)で区切られる。 フォーマット リクエストラインは1行。ヘッダは複数行。 大項目 小項目 説明 リクエストライン メソッド GET,POST,PUTなどのどれか。 リクエストURL リクエストを処理するURI プロトコルバージョン HTTPのバージョン。【例】HTTP/1.1 ヘッダ HOST リクエスト先のホスト名。必須項目 空行 POSTのときにヘッダの終了を示すために挿入される メッセージボディ POSTのときにリクエストデータを出力する 【例】 GET http //example.jp/31/31-001.php HTTP/1.1 リクエストライン Host example.jp --+ User-Agent Mozilla/5.0 (Windows NT 5.1; rv 2.0.1) Gecko/20100101 Firefox/4.0.1 | Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +-- ヘッダ Accept-Language ja,en-us;q=0.7,en;q=0.3 | Accept-Encoding gzip, deflate | Accept-Charset Shift_JIS,utf-8;q=0.7,*;q=0.7 | Keep-Alive 115 | Connection keep-alive | Referer http //example.jp/31/ --+ Accept-CharsetでShift-JISの品質係数が1であるため、サーバは、Shift-JISでエンコードしたメッセージを返す。 POST http //example.jp/31/31-003.php HTTP/1.1 リクエストライン Accept image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel ヘッダ Referer http //example.jp/31/31-002.php Accept-Language ja User-Agent Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Inf oPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Content-Type application/x-www-form-urlencoded Accept-Encoding gzip, deflate Host example.jp Content-Length 65 Connection Keep-Alive Pragma no-cache name=%E8%8F%85%E7%9B%B4%E4%BA%BA mail=kan@aaa.jp gender=%E7%94%B7 メッセージボディ Hostヘッダ HTTP1.1では必須。POST/GETでのURIにHOSTを指定していなかった場合、Virtualホストを特定できない。そのためHostヘッダにHOST名を指定する。URIにホスト名があって、Hostヘッダにもホスト名がある場合はURIを優先する。URIにホスト名を指定することを強制すれば良いような気がするが。 Referer ヘッダの一種。リンク元のURLを示す。あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのこと。 改変、削除される場合があるので正しくリンクを示しているとは限らない。 セキュリティ上、問題となるのは、URLが秘密情報を含んでいる場合。たとえば、URLがセッションIDを含んでいる場合。なりすましに使われる可能性がある。 【例】 GET http //example.jp/31/31-002.php HTTP/1.1 Accept image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, appl ication/msword, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms -xpsdocument, application/xaml+xml, */* Referer http //example.jp/31/ Accept-Language ja User-Agent Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Inf oPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Accept-Encoding gzip, deflate Host example.jp Connection Keep-Alive http //example.jp/31/のHTMLのaタグからリクエストが発生したため、Refererヘッダがつく。 レスポンス 全てテキスト。行で区切られる。 フォーマット ステータスラインは1行。ヘッダ、ボディは複数行。 大項目 小項目 説明 ステータスライン プロトコルバージョン ステータスコード 1XX 処理継続、2XX 正常終了、3XX リダイレクト、4XX クライアントエラー、5XX サーバエラー テキストフレーズ レスポンスヘッダ Content-Length ボディのバイト数 Content-Type MIMEタイプ; charset=エンコーディング 空行 ヘッダの終わりを示す ボディ 【例】 HTTP/1.1 200 OK Date Wed, 04 May 2011 04 51 51 GMT Server Apache/2.2.14 (Ubuntu) X-Powered-By PHP/5.3.2-1ubuntu4.2 Vary Accept-Encoding Content-Length 20 Keep-Alive timeout=15, max=100 Connection Keep-Alive Content-Type text/html; charset=UTF-8 body 13 51 /body Content-type メディアタイプを示すエンティティヘッダ(メッセージボディに対する付随情報)。type "/" subtype *( ";" parameter )であらわされる。text/html; charset=utf-8など。charsetを追加すると出力の文字コードを示す。HTML文書にapplication/octet-streamを付けると、 多くの場合、Webブラウザはそれをダウンロードするか否か問い合わせるようになる。 Apacheの場合は、httpd.confの以下の設定でcharsetを指定する。 AddDefaultCharset UTF-8 Tomcatでは、JSPのpageディレクティブで設定する。 %@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" % http //www.atmarkit.co.jp/fjava/rensai3/mojibake01/mojibake01.html 参照
https://w.atwiki.jp/yoshida2/pages/115.html
telnetでブラウズ(HTTP) このページでは、インターネットでホームページなどをブラウジングするときに利用するHTTPプロトコルについて説明しています。 概要 HTTPプロトコルとは、Hypertext Transfer Protocolの略で、インターネットでホームページなどをブラウジングするときに利用しているプロトコルです。 HTTPプロトコルは、TCP/IP上のプロトコルで、通常80番ポートを使ってアクセスします。 詳細な定義は、以下のRFCで定義されています。 RFC-1945 HTTP/1.0 RFC-2068 HTTP/1.1 基本的に、メッセージを要求(リクエスト)し、その応答結果(レスポンス)を表示するだけです。 HTTPのアクセスログ ApacheなどのWebサーバのログを見ると、リクエストとレスポンスが、以下の形式で出力されます。 アクセスログの書式 アクセス元 - - [アクセス時間] メソッド名 URL名 プロトコルバージョン レスポンスコード 例: 10.0.1.20 - - [01/Jul/1999 23 22 46 +0900] GET /usr/joe/index.html HTTP/1.0 200 2060 メソッドの種類には、GETやPOSTなどがあります。 GETメソッドは、HTMLデータや画像データなどを取得する場合に使用します。 GETメソッドで要求すると、ヘッダ情報とHTMLデータが返却されます。 GETメソッドでCGIを呼び出すこともできます。 パラメータを渡す場合は、URLの後に ?name1=データ1 name2=データ2 という形式で指定します。 HEADメソッドは、ファイルサイズや更新日時を調べる場合に利用します。 HEADメソッドを利用すると、ヘッダ情報だけが返却されます。 POSTメソッドは、CGIなどにデータを渡す場合に使用します。 パラメータなどのデータは、環境変数などによって、CGIに渡ります。 以下に、HTTPのバージョンとメソッドの種類を示します。 メソッドの種類 HTTP/1.0 GET, HEAD, PUT, POST, DELETE, LINK, UNLINK HTTP/1.1 OPTIONS, TRACE, PATCH 以下に、レスポンスコードの一覧を示します。 100番台は通信エラー、200番台は正常終了、300番台はリダイレクト、400番台はクライアントエラー、500番台はサーバエラーを表しています。 リダイレクトとは、クライアントの指定したURLに移動した場合などに返却されます。 レスポンスコード コード 内容 コード 内容 100 Continue 101 Switching Protocols 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content 300 Multiple Choices 301 Moved Permanently 302 Moved Temporarily 303 See Other 304 Not Modified 305 Use Proxy 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Time-out 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Request Entity Too Large 414 Request-URI Too Large 415 Unsupported Media Type 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Time-out 505 HTTP Version not supported レスポンスコードは、ログファイルなどに出力されますので、知っていると役に立つと思います。 telnetでブラウジング では、実際にtelnetでブラウジングしてみましょう。 telnetコマンドで、WWWサーバ名と、80番ポートを指定します。 Linux# telnet ash.jp 80 そこで、環境変数をすべて表示するCGI(env.cgi)を起動してみます。 まず、GETコマンドで、取得したいURLと、HTTPのバージョンを指定します。 GET /~joe/prog/cgi/env01.cgi HTTP/1.0 ここで、リターンのみを入力しても表示されますが、以下のオプションも入力してみます。 指定したオプションは、環境変数としてCGIに渡ります。 User-Agent Telnet [ja] (Linux) Host www.ash.jp リターンのみを入力すると、レスポンスと、HTMLが表示されます。 当然、HTMLのソースが表示されるだけですから、頭の中でHTMLを解析し画面イメージを想像する必要があります。 以下に実行結果を示します。 Linux# telnet ash.jp 80 Trying 210.154.87.18... Connected to ash.jp. Escape character is ^] . GET /~joe/prog/cgi/env01.cgi HTTP/1.0 User-Agent Telnet [ja] (Linux) Host ash.jp HTTP/1.1 200 OK DeleGate-Ver 5.8.8 (delay=7) Date Fri, 02 Jul 1999 09 56 24 GMT Server Apache/1.3.3 (Unix) Content-Type text/html Via 1.0 210.154.87.18 80 (DeleGate/5.8.8) Content-Length 954 html body h1 CGIでの環境変数一覧 /h1 hr h3 環境変数の表示 /h3 DOCUMENT_ROOT = /usr/local/share/apache/htm br GATEWAY_INTERFACE = CGI/1.1 br HTTP_FORWARDED = by http //210.154.87.18 80/ (DeleGate/5.8.8) for sv01.lo.ash.or .jp br HTTP_HOST = ash.jp br HTTP_USER_AGENT = Telnet [ja] (Linux) br HTTP_VIA = 1.0 210.154.87.18 80 (DeleGate/5.8.8) br PATH = /usr/local/sbin /usr/local/bin /sbin /usr/sbin /bin /usr/bin br QUERY_STRING = br REMOTE_ADDR = 10.0.1.254 br REMOTE_PORT = 12621 br REQUEST_METHOD = GET br REQUEST_URI = /~joe/prog/cgi/env01.cgi br SCRIPT_FILENAME = /home/joe/public_html/prog/cgi/env01.cgi br SCRIPT_NAME = /~joe/prog/cgi/env01.cgi br SERVER_ADMIN = info@ash.jp br SERVER_NAME = ash.jp br SERVER_PORT = 80 br SERVER_PROTOCOL = HTTP/1.0 br SERVER_SIGNATURE = ADDRESS Apache/1.3.3 Server at ash.jp Port 80 /ADDRESS br SERVER_SOFTWARE = Apache/1.3.3 (Unix) br hr br このCGIのソース: a href=env01.txt env01.cgi /a br /body /html Connection closed by foreign host. 最初の、HTTP/1.1 200 OKは、HTTPプロトコルで、正常に転送したことを表します。 その後にヘッダ情報が転送され、最後にHTMLのソースが転送されます。 環境変数として、以下の値が追加設定されているのが確認できます。 HTTP_HOST = ash.jp HTTP_USER_AGENT = Telnet [ja] (Linux) このように、HTTPプロトコルは、要求(リクエスト)に対して、応答(レスポンス)が返却されるだけのシンプルなプロトコルです。 余談ですが、HTTPプロトコルという呼び方は、Hyper Text Transfer Protocol プロトコルになって、プロトコルが2重になってしまい、おかしいです。 でも、この方がわかりやすいので、私はよく使います。
https://w.atwiki.jp/0x0b/pages/89.html
ハイパーテキスト転送プロトコル RFC 2616 WebブラウザとWebサーバの間でHTMLなどのコンテンツの送受信に用いられる通信プロトコル リクエスト-レスポンス型 トランスポート・プロトコルとして通常TCPを使用 基本的な考え方は非常に単純であり「何を」「どうして」ほしいのかを相手に要求する。「何を」に当たるのがURL、「どうして」がメソッドにあたる。 World Wide WebにおけるWebページなどのリソースは、Uniform Resource Identifierによって指定される。 ポート番号80をデフォルトとして使用する(送信時は8080)。 TLSで暗号化され、セキュリティを確保したHTTPは、HTTPSと呼ばれる(httpsは実際にはURIスキームの1つであり、実際のプロトコルにはHTTP over SSL/TLSが用いられる)。 HTTP は基本的にサーバが状態を保持しない (stateless) プロトコルだが、データベースなどを使用するWebアプリケーションにおいては状態保持が必要だったため、そのためにいわゆる Cookie とよばれる機構が Netscape Communications Corporation によって導入された。Cookie を使用することによって状態を管理し、"セッション" を維持することが可能になる。 HTTPの拡張プロトコルとしてWebDAVがある。 UPnPでは、HTTPをUDP上で使用するHTTPUや、マルチキャストで使用するHTTPMUが規定された。 HTTP/0.9 URLのみの簡単なやりとり HTTP/1.0 NNTPやSMTPのような各種ヘッダが定義 HTTP_Cookieなどの利用 HTTP/1.1 複数データを転送するためのキープアライブ(keep-alive)機能やプロキシなどの利用も想定された仕様 バーチャルホストをサポートした。インターネット人気に伴い多くの企業がWebサイトを持ち始めたが、当時ではまだまだ企業が自前のWebサーバを運用するのは人員、効率の問題で難しかったためISPのサーバでホスティングをしていた。当時はまだ一社ごとに専用サーバを用意するほどのことでもないため一台のサーバで複数のWebサイトを運用していた。 しかしバーチャルホストには問題がある。例えばある1台のサーバに foo.example.com と bar.example.com という二つの仮想Webサーバがあるとする。ここではクライアントは http //foo.example.com/index.html にアクセスしたいとする。そのためにはまず foo.example.com をIPアドレスに解決するためDNSサーバに問い合わせ、そのサーバにアクセスし GET index.html を要求する。しかしサーバ側のIPアドレスは foo.example.com と bar.example.com 共におなじIPアドレスである。もし foo.example.com にも bar.example.com にも index.html というファイルが存在すればクライアントはどちらのサーバにアクセスしたのかわかるすべがない。 これを解決するにはそれぞれにIPアドレスを付与することで解決できるが、IPv4の資源を無駄にすることになる。 HTTP/1.1ではこれを解決するためにHostヘッダを追加した。 HTTP/1.0のヘッダ GET /index.html HTTP/1.0 HTTP/1.1のヘッダ GET /index.html HTTP/1.1 Host foo.example.com 動作 通信の開始 他のプロトコル同様クライアント側とサーバ側ではHTTPの役割が大きく異なる。HTTP通信を開始できるのはクライアント側のみである。 クライアント側はサーバにリクエストを送り、サーバはクライアントにレスポンスを返すのが最も典型的なHTTPのやりとりである。 接続 システム間でメッセージをやりとりするにはTCP接続を確立させる必要がある。 HTTP/0.9ではクライアントのリクエストごとにTCP接続を確立させる必要があったが、これは当時のWebサイトがシンプルなテキストベースであることが多かったためである。近年ではJavaScriptやアニメーション画像など、多数のオブジェクトが埋め込まれたWebサイトが一般的となってきているが、これら全てのオブジェクトを取得するたびにTCP接続を確立するのはサーバやネットワークに大きな負担を強いるため、HTTP/1.1では持続的接続がサポートされることとなった。ただしこの機能が利用できるのはサーバ側がその要求を許可した場合のみである。 パイプライン クライアントは前のリクエストに対するサーバの応答を待たずに別のリクエストを発行できる。 メソッド HTTPでは8つのメソッドが定義されている。ただし実際のHTTP通信ではGETとPOSTメソッドだけで殆どを占める。 HTTPメソッドの一覧 メソッド HTTP/0.9 HTTP/1.0 HTTP/1.1 GET ○ ○ ○ POST ○ ○ PUT △ ○ HEAD ○ ○ DELETE △ ○ OPTION ○ TRACE ○ CONNECT ○ GET 指定されたURIのリソースを取り出す。HTTPの最も基本的な動作で、HTTP/0.9では唯一のメソッド。 POST GETとは反対にクライアントがサーバにデータを送信するメソッドである。Webフォームや電子掲示板、Wikiなどに投稿する。GETの場合と同じくサーバはクライアントにデータを返すことができる。 PUT 指定したURIにリソースを保存する。URIが指し示すリソースが存在しない場合は、サーバはそのURIにリソースを作成する。画像のアップロードなどが代表的。 DELETE 指定したURIのリソースを削除する。 OPTION サーバを調査するメソッド。例えばサーバがサポートしているHTTPのバージョンなどを調査できる。 HEAD GETと似ているがサーバはHTTPヘッダのみ返す。クライアントはWebページを取得せずともそのWebページが存在するかどうかを知ることが出来る。例えばWebページのリンク先が生きているか検証するときなどにリンク先のデータを全て取得することなく調査することが出来る。 TRACE サーバまでのネットワーク経路をチェックできる。サーバは受け取ったメッセージのそれ自体をレスポンスのデータにコピーして応答する。WindowsのTracertやUNIXのTracerouteとよく似た動作。 CONNECT 暗号化したメッセージをプロキシで転送する際に用いる。 サーバの連携 バーチャルホスト リダイレクト 301 MovedというステータスコードとURIを受け取りクライアントはこの受け取ったURIに再度GETを送る。 クッキー(HTTP_Cookie) HTTPメッセージ クライアントからのHTTPリクエストは3つの要素から構成される。それぞれメソッド、URI、HTTPのバージョンでありスペースで区切られている。 下にもっとも単純な、クライアントとサーバ(www.google.co.jp 80)とのHTTPプロトコルのやり取りの例を挙げる。 クライアントのリクエスト GET / HTTP/1.0 GETがメソッド、URIは / 、バージョンはHTTP/1.0であることを示す。 URIは/でルートリソースを対象にしたリクエストであることを示している。TRACEなど特定のサーバを対象としないリクエストの場合には*が表示される。 サーバのレスポンス HTTP/1.0 200 OK Cache-Control private Content-Type text/html Set-Cookie PREF=ID=72c1ca72230dea65 LD=ja TM=1113132863 LM=111 3132863 S=nNO7MIp W2o7Cqeu_; expires=Sun, 17-Jan-2038 19 14 07 GMT; path=/; domain=.google.co.jp Server GWS/2.1 Date Sun, 10 Apr 2005 11 34 23 GMT Connection Close html head meta http-equiv="content-type" content="text/html; charset=Shift_JI S" title Google /title style !-- ・・・以下省略 上のリクエストのGETにあたる部分をメソッドといい、 HTTP/1.0では、GET, HEAD, PUT, POST, DELETE, LINK, UNLINK、 HTTP/1.1ではさらに、OPTIONS, TRACEがある。 GETメソッドのレスポンスにはヘッダ情報のあとに改行が挟まれ、コンテンツ本体が送られる。 HEADメソッドのレスポンスにはコンテンツサイズや更新日時などの情報を含むヘッダのみが送られる。 また、リクエストの2行目以降はヘッダを送る。 HTTPヘッダフィールド ヘッダの各要素は フィールド名 内容 のペアで構成される。 ブラウザの情報を表すUser-Agent、使用候補言語を表すAccept-Language、他ページへのリンクを辿った場合にそのリンク元ページのURLを表すRefererなどが代表的なフィールドである。 なお、リクエスト時のHostヘッダはHTTP/1.1では必須であるが、HTTP/1.0では無くても良い。 但し、サーバがバーチャルホストを利用している場合は、Hostヘッダが無いとリソース取得に失敗するので、たとえHTTP/1.0を使用していてもHostヘッダを付加しなければならない。 HTTPヘッダフィールドの一覧 リクエストヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Acceptクライアントの受け入れ可能コンテンツタイプを示す○○ Accept-Charsetクライアントの受け入れ可能文字セットを示す○○ Accept-Encodingクライアントの受け入れ可能文字エンコーディングを示す○○ Accept-Languageクライアントの受け入れ可能言語を示す○○ Authorizationクライアントの認証情報を示す○○ Cookieクライアントの状態管理情報をサーバに返す Cookie2HTTP/1.1のSet-Cookie2ヘッダの受け入れ可能をサーバに知らせる Expectクライアントがサーバに期待する動作を示す○ Fromリクエスト発行者個人の情報を示す。一般的に電子メールアドレスを使用する○○ Host要求しているオブジェクトがあるホストを示す○ If-Matchif文を用い条件が真の場合のみリクエストを処理するようサーバに要求する○ If-Modified-Since指定日及び指定時刻以降にオブジェクトが変更されている場合のみリクエストを処理するよう要求する○○ If-None-MatchIf-Matchの逆で条件が真でない場合のみリクエストを処理する要求○ If-Range条件が真の場合のみ指定したオブジェクトの範囲を返すようサーバに要求する○ If-Unmodified-SinceIf-Modified-Sinceの逆で真でないときのみ実行する○ Max-Forwardsリクエストの中間システム経由数を最大いくつまでかを指定する○ Proxy-Authorizationクライアントがプロキシサーバに対して自身の認証を行う○ Rangeオブジェクト全体でなくリソースの一部を要求する○ Refererリクエストの出所を示す。一般的にはユーザの辿ったWebページのURLが用いられる。○○ TEレスポンスの受け入れ可能転送エンコーディングを示す○ レスポンスヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Accept-Rangesオブジェクトの一部に対するリクエストをサーバが受け入れ可能か示す○ Ageオブジェクトの経過時間を秒単位で返す○ AllowオブジェクトがサポートするHTTPメソッドを示す○○ ETagオブジェクトのエンティティタグ値を示す○ Locationオブジェクトの場所を示す○○ Proxy-Authenticateプロキシサーバがクライアントに認証を要求するときに用いる○ Retry-Afterリクエストの再試行をいつ行うかをクライアントに通知する○○ Serverサーバのベンダー名、バージョン番号を占めす○○ Set-Cookie2サーバがクライアントにCookieを送信するときに用いる Varyサーバのレスポンス内容を決定する際にリクエストURI以外に使用したHTTPヘッダのリストを示す○ WWW-Authenticateクライアントに対してリクエストの再発行を要求する。認証情報も含まれる○○ 一般ヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Cache-Controlメッセージの経由する中間キャッシュの動作を指示する○ Connection中間システムが転送すべきでないヘッダのリストを示す○○ Dateメッセージの作成日時を示す○○ Pragmaメッセージに関する追加情報を示す○○ Trailerメッセージボディの後に追加のヘッダーが表れることを示す○ Transfer-Encodingクライアントの転送を目的としたオブジェクトのエンコーディングを示す○ Upgrade通信相手に別のプロトコルにアップデートするよう要求する○ User-AgentクライアントのWebブラウザなどの情報を示す○○ Warningメッセージに関する追加情報を示す。通常はキャッシュの問題を警告するときに使われる○ エンティティヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Content-Encodingオブジェクトのエンコーディングを示す○○ Content-Languageオブジェクトの言語(人間の言語)を示す○○ Content-Lengthオブジェクトのサイズをバイト単位で示す○○ Content-Locationオブジェクトの場所を示す○ Content-MD5オブジェクトのメッセージダイジェストを運ぶ○ Content-Rangeメッセージボディで運ばれるオブジェクトの範囲を示す○ Content-Typeオブジェクトのタイプを示す○○ Expiresオブジェクトの有効期限の日時を示す○○ Last-Modifiedオブジェクトが最後に変更された日時を示す○○ Accept サーバのレスポンスに含まれるメッセージボディで受け入れることが出来るコンテンツタイプと各コンテンツタイプの相対的な優先度を指定するリクエストヘッダ。指定できるコンテンツタイプはIANAによって定義されている。 Accept text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c 上記のようにAcceptヘッダには行をわけて複数のコンテンツタイプを指定できる。上記の例はいずれの4のコンテンツタイプのいずれも受け入れ可能であることを示す。0.5や0.8といった数字は品質係数で0~1の範囲の数値である。数値の指定がなければ1.0となる。 text/plain; q=0.5 text/html text/x-dvi; q=0.8 text/x-c Accept-Charset レスポンスで返されるメッセージボディの文字コードを指定するリクエストヘッダ。Acceptと同じく複数指定でき品質係数も設定できる。定義済み文字セットはIANAが管理している。 Accept-Charset unicode, *; q=0.8 この例だとクライアントはUnicode文字セットを優先的に希望しているが他の文字セットとの相対優先度0.8で受け入れている。ただしサーバからのレスポンスのHTTPヘッダそのものの文字コードは常にISO-8859-1である。 Accept-Encoding Accept-Language レスポンスの言語(人間の言語)に対する優先度を指定する。言語コードはISO-639の2文字の省略コードを用いる。書き方は他のAccept-群と変わらず。 Accept-Language en-gb, en; q=0.8 上記の例はまずイギリス英語を要求し、利用できない場合はその他の英語を要求する。 Accept-Ranges Acceptで始まる他のヘッダフィールドと違いレスポンスヘッダーである。現在の仕様では2つの指定方法しかない。 Age リソースの推定経過時間を表示するレスポンスヘッダ。キャッシュサーバーはAgeヘッダの値からキャッシュしたリソースが有効かどうかを判定する。 Allow Authentication-info ユーザ認証のやりとりの最後で用いられる、成功したレスポンスのサーバが含めることの出来るレスポンスヘッダー。 Authorization サーバに対するクライアント自身の認証を行うことが出来る。 Cache-Control キャッシングの動作を指定するためのマスターヘッダ。 Connection Content-Encoding Content-Language リソースを英語などの自然言語で示すのに使われる。言語の指定はAccept-Languageヘッダと同じ。 Content-Length Content-Location Content-MD5 メッセージボディが変更されず宛先に届くことを保証する。MD5アルゴリズムを実行する。ただし悪意の改ざんに対しては当然MD5も改ざんされるのであまり機能はしない。どちらかといえば偶発的な変更の保証をしている。 Content-Range ダウンロードの再開に用いられる。 Content-Type メッセージボディに含まれるオブジェクトタイプを示す。次の例はリソースがテキストファイル、文字セットはISO-8859-4を使用していることを示している。 Content-Type text/plain; Charset=ISO-8859-4 Cookie クライアントがHTTP状態管理を望む場合にサーバから受け取ったクッキーを以後のリクエストに次の例のようなヘッダーを付加する。 Cookie $Version="1"; NAME="VALUE"; $Path="/shopping"; $domain="www.shop.com"+ $Port="80" $VersionはHTTPのバージョン、NAMEはクッキーの名前である。$から始まるクッキー名は使用が禁止されている。 Cookie2 基本的にCookieヘッダーとCookie2ヘッダーは別物である。 Date サーバがメッセージを生成した日時を示す。リソースの時間を示すLast-Modifiedヘッダーとは区別する必要がある。 HTTP/1.1では次のような形式を用いるようRFC1123で定義されている。 Date Sun, 06, Nov 1994 08 49 37 GMT HTTP仕様ではレスポンスにDateヘッダーを含めることを求めている。ただしレスポンスのステータスがサーバエラーの場合にはDateヘッダーは返らない。 ETag 主にキャッシングのパフォーマンスを向上する目的で使われる。 Expect サーバに対して特定の動作の期待を知らせる。用途としてはクライアントがサーバに対して100 Continueステータスを返すことを期待する場合に使われる。 Expect 100-continue サーバが期待に応じれない場合は417 Expectation Failedを返す。クライアントがいくつかのプロキシ経由で通信している場合、各プロキシサーバはExpectヘッダの一切の修正を許されない。 Expires オブジェクトの有効期限を示す。このヘッダで指定された日時までキャッシュはレスポンスのコピーを保持し、リクエストに対するレスポンスとして返すことが出来る。サーバがオブジェクトのキャッシュを望まない場合にはExpiresヘッダに過去の日時を設定することが多い。また、HTTP仕様では1年以上先の日時は設定できない。 Expires Thu, 28 Aug 2010 16 00 00 GMT Cache-Controlヘッダのmax-ageディレクティブはExpiresヘッダより優先されるため注意が必要である。 From リクエストを発行したユーザを特定することが出来る。1990年代では電子メールアドレスを設定することが多かったが、迷惑メールの問題もあり現在では殆ど使われていない。 From hoge@hogehoge.com Host 主にレンタルサーバのサポートを目的としてHTTP/1.1で導入された。現在ではHostヘッダを利用できない場合レンタルサーバのウェブサイトとまともな通信が出来ないと言ってよい(詳細はHTTP#歴史を参照)。 If-Match クライアントのリクエストを条件付きのリクエストにするために使われる。サーバは一定の条件が真であった場合のみリクエストを受け入れることが出来る。例えばウィキペディアを編集する際、記事のソースを取得し、書き換える際の間に別のユーザが既に編集していないかを判断するときなどに用いられる。 「if文」も参照 利用者:HogeがHTTPの記事を取得。ETagは1234 利用者:HageがHTTPの記事を取得。ETagは1234 利用者:HogeがHTTPのETagを再度取得。先ほど取得したETag 1234と現在のETag 1234が一致。 利用者:HogeがHTTPの記事を編集。ETagは1256になる。 利用者:HageがHTTPのETagを再度取得。先ほど取得したETagと現在のETagはマッチせず。 サーバは利用者:Hageの書き込みを拒否。 If-Modified-Since このヘッダーで指定された日時以降にオブジェクトが変更されている場合のみリクエストに応答するようサーバに要求する。リソースの削減に効果がある。 If-None-Match If-Matchと逆で条件が真でない場合のみリクエストを処理するよう要求する。 If-Range クライアントがキャッシュにオブジェクトの一部分を持っている場合にパフォーマンスを向上できる。 If-Unmodified-Since If-Modified-Sinceの逆の働きをする Last-Modified サーバオブジェクトの最終更新日時を示す。クライアントはこのヘッダを利用しIf-Modified-Sinceヘッダ等と組み合わせることによって効果を発揮する。 Location サーバがクライアントにリダイレクト先URLを知らせる際に用いられる。一般的にステータスコードが3xx代のレスポンスと共に使われるが201 Createdのレスポンスでも使うことが出来る。Content-Locationヘッダと名前が似ているが全く関係のない別のヘッダであるため注意。 Max-Forwards プロキシサーバ等を経由する際の最大ホップ数を指定する。二重ループなどでサーバから応答が得られない場合の問題解決の際、OPTIONメソッドやTRACEメソッドと共に用いられる。 HTTPステータスコード ステータスコードはクライアントのリクエストが成功したかどうかを示した上で追加情報を提供するいずれも3桁の数字から成る。具体的には100-199が情報提供、200-299が成功を示す。300-399はリダイレクト、400-499はエラーを示す。 セキュリティ技術 Basic認証 HTTP/1.1でBasic認証が定義されており最も単純なセキュリティ技術である。しかし仕様書を読むと定義を書いた著者自身が認証技術に疎いことがよくわかる。『HTTPプロトコル セキュア&スケーラブルなWeb開発』の著者は「基本認証を用いるくらいならなにも使わない方がまし」と著書に書いている。通常サーバは401ステータスコードで応答する。 行末文字はWindowsと同じCRLF。 RFC 2818 - HTTP Over TLS RFC 2817 - Upgrading to TLS Within HTTP/1.1 RFC 2616 - HTTP/1.1 ハイパーテキスト転送プロトコル -- HTTP/1.1 RFC 2068 - HTTP/1.1(初版,RFC 2616 によって obsolete) TS X 0085 2004 - ハイパテキスト転送プロトコル HTTP/1.1 標準仕様書(TS) RFC 1945 - HTTP/1.0 HttpTea Freeware HTTP Logger Studying HTTP
https://w.atwiki.jp/hereitis/pages/19.html
まとめる前の一時領域 エクセル 特定のセルの数値だけを加算 http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1013274665 セルのコピーで変更されたくない箇所に「$」をつける。「A1」を変更されたくない場合は「$A$1」とすればよい。 VLOOKUP関数の使い方 http //allabout.co.jp/gm/gc/297725/ windows7のスタートアップ領域の場所(深い。。。) C ┗ Users ┗ "Username" ┗ AppData ┗ Roaming ┗ Microsoft ┗ Windows ┗ Start Menu ┗ Programs ┗ Startup Linuxでメモリ解放漏れチェックを行う。 C言語ならmemwatchでも可能だが、C++も対応しているmtraceのほうが有用。 ※ mtraceコマンドは"glibc-utils"に含まれている。 http //rpm.pbone.net/ フリー処理マクロ #define LOCAL_FREE(block)\ {\ if(block) \ {\ free(block);\ block = NULL;\ }\ } メモリリークチェック #define DEBUG_MEMORY_CHECK(){ \ char command[256]; \ fprintf(stderr, "---------------------------------------\n"); \ fprintf(stderr, "FILE=%s[%d]\n", __FILE__, __LINE__); \ sprintf( command, "grep VmSize /proc/%d/status", getpid() ); \ system( command ); \ fprintf(stderr, "---------------------------------------\n"); \ } /* * 前定義識別名 __func__ 使用例 (c)1999 seclan * ver1.00 1999/05/16 最初のバージョン */ #define dbg(...) \ (printf("%s %u @%s ",__FILE__,__LINE__,__func__), \ printf(" "__VA_ARGS__)) int foo_bar(int i) { //static const char __func__[] = "foo_bar"; //(1) if(i != 3){ dbg("i=%d", i); i *= i; } return i; } personal http //gigazine.net/index.php?/news/comments/20100820_manga_javascript2/ http //careerzine.jp/monosashi/search http //item.rakuten.co.jp/watchstraps/10000879/ http //www.rakuten.co.jp/aikamu/ http //www.cfjapon.co.jp/camillefournet/index.html http //nensyu-labo.com/ dev http //www.stackasterisk.jp/tech/engineer/uml02_01.jsp#1 http //www.stackasterisk.jp/tech/engineer/uml03_02.jsp http //www.bohyoh.com/CandCPP/C/Library/index.html http //msdn.microsoft.com/ja-jp/library/14h5k7ff%28VS.80%29.aspx http //simd.jugem.jp/?eid=55 http //codezine.jp/ http //www.geocities.jp/ky_webid/c/043ans.html http //www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/function.html#opendir http //www.geocities.co.jp/SiliconValley-Bay/7437/c/selfstruct.html http //wisdom.sakura.ne.jp/programming/cpp/index.html https //www.ipa.go.jp/security/fy13/crypto/crypto_api/Crypto-API-Spec.pdf http //park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif.html http //www.linux.or.jp/JM/index.html http //code.google.com/intl/ja/apis/picasa/docs/web_uploader.html http //homepage3.nifty.com/kaku-chan/index.html http //code.google.com/apis/youtube/dashboard/gwt/index.html#newProduct http //code.google.com/intl/ja/apis/youtube/developers_guide_protocol.html http //code.google.com/intl/ja/apis/picasaweb/overview.html http //www002.upp.so-net.ne.jp/ys_oota/mdp/ http //www.techscore.com/tech/DesignPattern/ non cat http //oshiete1.goo.ne.jp/qa1771528.html?from=navi_ranking http //www.nurs.or.jp/~sugi/linux1.htm http //www.02.246.ne.jp/~torutk/cxx/mpc/index.html#SEC33 http //park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif.html#IFD0Tags http //www.deviantart.com/ http //tools.fictionlife.com/unixtime/index.html?unixtime=1261976200 http //www.geocities.jp/bananajuku/r_c/c1101.html http //www.yaskey.cside.tv/mapserver/note/degree.php http //next1.msi.sk.shibaura-it.ac.jp/MULTIMEDIA/CPPPUBLISH/CPPPUBLISH.html http //park15.wakwak.com/~unixlife/java/j2sdk.html http //www.sage-p.com/process/cool.htm#7 http //itpro.nikkeibp.co.jp/article/COLUMN/20070425/269449/?ST=pm http //itpro.nikkeibp.co.jp/article/COLUMN/20070528/272592/?ST=pm http //akademeia.info/index.php?C%B8%C0%B8%EC%2F%C9%B8%BD%E0%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA%2F%A5%D5%A5%A1%A5%A4%A5%EB%C1%E0%BA%EE%B4%D8%BF%F4%2Ffopen#y5005b16 http //www.juse.or.jp/software/pdf/23spc_2.pdf http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1337187908?fr=chie-websearch-1 k=34vV7tyQnZaZkZqGzpWui5CPlsuRqIbT46SZnpqWlZHh1IutlpmQj5bL6ZCei6OWlZDU6c7h54ajlVgjGkz3Jo9WChxY%2BfKQj5bN2NGGo5WkmZ6TpJmfkJCL1OTZ18eWo5GQkIvblqOQmaicpZCQi%2BTXi6iFpoubkM2LrZaaoZarmqelnZmrrsrR193f1OqVm6arnKGVrJmmqMXM593f09%2BlmaKllp6mq6KendXM49fazpWgi%2BKFrougoJqgp6Wdn5qsi5uQ2Nje2deQnZabkZqG25Wui6GF8Q%3D%3D http //michinakaba.com/index.htm http //proger.blog10.fc2.com/blog-entry-20.html http //www.ops.dti.ne.jp/~allergy/thread/thread.html http //www.saiin.net/~silphire/pthread/pthread.html http //www.ideaxidea.com/archives/category/useful_tools http //www.startupceo.co.za/2010/03/01/amazing-speech-bryan-dyson/ http //www21.atwiki.jp/hereitis http //www.er.ams.eng.osaka-u.ac.jp/yamamoto/index.php?C%2FC%2B%2B http //www.popxpop.com/archives/2007/06/post_298.html http //ash.jp/perl/socket_http.htm http //www.ultra-case.com/products_combo.php http //www.sideriver.com/bicycle/howto/index.html https //www.jis-t.ne.jp/cgi-bin/dcw11111.cgi http //www.ne.jp/asahi/tanaka/yasuaki/tds.html http //www.ibm.com/developerworks/jp/linux/library/l-debug/ http //d.hatena.ne.jp/elwoodblues/20081016/1224124055 http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1241678717?fr=top_mantenna http //gigazine.net/ http //jibun.atmarkit.co.jp/lcareer01/rensai/career09/data09.html http //southafrica2010.yahoo.co.jp/schedule/group http //neutralx0.net/escape/vision_play.html http //nikkei.gnavi.co.jp/ http //www.geekpage.jp/programming/ http //www.kongregate.com/games/astro75/gravity-master http //games.yahoo.co.jp/games/flash/atamascam_age/ http //www2.ttcn.ne.jp/honkawa/index_list.html#%E6%83%85%E5%A0%B1 http //www.fireproject.jp/feature/c-language/index.html tool一覧 clcl DF QuickFileCopy eptree112d TEST 20%ルール http //d.hatena.ne.jp/junkonno/20060907/1157617024 http //blog.kicho.chips.jp/?eid=1049479 モチベーション http //xbrand.yahoo.co.jp/category/business_money/5646/6.html http //www7a.biglobe.ne.jp/~justeye/mv_towa.htm http //www7a.biglobe.ne.jp/~justeye/jinnji_kouka.htm http //bb-wave.biglobe.ne.jp/business/report/article_154.html http //bb-wave.biglobe.ne.jp/business/report/article_73.html http //bb-wave.biglobe.ne.jp/business/report/article_24.html 企画書 http //www.real-management.com/proposal/proposal_c/topmng.html 社内検定 http //www.witem.co.jp/mel_back/01080.htm 統計資料 http //www.jil.go.jp/kokunai/statistics/index.html OJT http //www.change-jp.com/hrd/ojt/index.html http //www.city.toyokawa.lg.jp/munic/200905190001.html http //www.uvc.co.th/News3-3.htm http //www.metro.tokyo.jp/INET/OSHIRASE/2008/10/DATA/20ian603.pdf http //www.pref.ehime.jp/h10102/kensyusho/ojt.htm
https://w.atwiki.jp/nokelila/pages/11.html
https //www.thewyco.com/news/covid-19-live-updates-more-us-pharmacies-to-start-vaccinating-high-risk-groups-06-01-2021 https //ww84w.medium.com/covid-19-live-updates-more-u-s-pharmacies-to-start-vaccinating-high-risk-groups-3949efd8f47c https //blog.goo.ne.jp/upcomingmovies2021/e/7acaad51367950d2de6ee4d51ed9cb6a https //fehimozodigital1.hatenablog.com/entry/2021/01/07/074928?_ga=2.63286698.444645817.1609973370-341740688.1609973370 https //www.mychemicalromance.com/news/rtye4n5e5-neryerydyetstr-3658736 https //www.topfind88.com/post/1263442/watch-news-of-the-world-2020-full-movie-online-free https //paiza.io/projects/ocKUUZiN7YrSrxJADILsNg?language=php https //ideone.com/QWy0a7 https //paste.feed-the-beast.com/view/1e91f719 https //paste.centos.org/view/938ac625#EECaKH2JesBoCXnUZ5BpCaNZU9BO3VB4 https //paste.ee/p/FP2Ok https //paste2.org/LfagFpEm https //note.com/covomaz/n/n2231f98d9718 https //www.peeranswer.com/question/5ff63767f5203a8c52ba37d4 https //www.wattpad.com/1006907170-watch-wonder-woman-1984-streaming-now-try-rye https //minimore.com/b/xUdCr/1 https //caribbeanfever.com/photo/albums/dr-esyrdyrs-setb-sedrtf http //officialguccimane.ning.com/photo/albums/rey-nsr-tsetzrsfdf http //millionairex3.ning.com/photo/albums/twb5b-w5w-besr4awrvawra http //recampus.ning.com/profiles/blogs/w4tbewb6e4w-6btwb-wbaw-w-f http //sfbats.ning.com/profiles/blogs/st-ewtytwt-eterth-rthdfxghnb http //www.4mark.net/story/3035899/watch-news-of-the-world-2020-full-movie-online-free https //www.1upfun.com/link/680063/train-to-busan-2-peninsula-2020-full-hd-movie-online-free https //www.scribd.com/document/489978956/nowwwr-ret-setrst https //brainly.co.id/tugas/37311827 https //archive.org/details/httpssites.google.comviewsdjkff https //eodev.com/gorev/20101291 https //znanija.com/task/41734561 https //nyhuseri.tumblr.com/post/639602996725121024/kfhh-ge-rejror-orweojtehnf http //www.goqna.com/41194/erh-w9orwe9r8uw-wr-8eur9urf
https://w.atwiki.jp/cheapugg058/pages/15.html
As written for Themichael kors store Roots by political correspondent Keli Goff, Ryan reportedly dated an African-American woman while in college Richard Matheson Richard Burton Matheson (born February 20, 1926) is an American author and screenwriter, primarily in the fantasy, horror, and science fiction genres However, the best advantage to ordering Direct TV is in pricedittoTweet{background #fff;padding 10px 12px 10px 50px;margin 0;min-height 48px;color #000;font-size 18px !important;line-height 22px;-moz-border-radius 5px;-webkit-border-radius 5px;} p Even then, I’d weigh that decision very carefully Be sure to watch the BCS Championship 2012 online streaming tv Var zooms smooth snow surface and the less a loss of control at high speeds of risk in relation to boarding or skiing Cheap3 If you hand wash and line dry your bras, they will last longerLast week, I wanted to watch my favorite football team, The Cleveland Browns, play against their arch-rival, the Pittsburgh SteelersJust to give you a glimpse, though, of what these options are, take a look at the list EphedraEphedra is actually sourced from a herbal plan Whilst a scientifically designed and constructed girdle can make one feel and look great, a poorly made one can be very uncomfortable making the wearer feel sore all over In north face outlet online the film, Bond and Melina Havelock become tangled in a web of deception spun by rival Greek businessmen against the backdrop of Cold War spy gamesindent {margin-left 20px;} Thus, it won’t be as effective when used in the long-termS They are not there to provide people with a way to pay their cell phone bill, or provide repair services for cell phones that become inoperable In 1976, academics Jensen and Meckling published a paper, "Theory of the Firm Managerial Behavior, Agency Costs and Ownership Structure", which had the effect of shifting the focus of corporate managers from the business operations (the real market) to the share price (shareholder value, or the expectations market) It has made over 3 million books accessible on the Apple devices for you to read which are not desired at all No matter how good the said team is, they cannot simply win matches with those injuries In the top of the eleventh inning, right fielder Dwight Evans made a sport jerseys spectacular catch of a Joe Morgan line drive and doubled Ken Griffey at first base to preserve the tie The wishes of all these people are now granted - weight loss is now easy with Super Slim Pomegranate She owns and controls her father s business interests, through Cox Enterprises To add salt to the wound, the film won three Golden Raspberry Awards Worst Actor (Cosby), Worst Picture, and Worst Screenplay WI Dept Americans are known to love this sport so much that they play the sport among family and friendsWhen to Use a ColonColons introduce us to sentences As a solo artist, she recorded great music, with singles like "I Hate Myself for Loving You," "Do You Want to Touch Me," and probably most recognizably, "I Love Rock n RollErin AndrewsDaddy issues?5 It is Frank Gore Jersey as follows AmeriTrust Groupe, IncWere you looking for some serious information?So sorry Sherman, a former half back, had torn his meniscus in college, and converted to quarterback his senior year when Shaughnessy installed the T-Formation at the University of Chicago Read more on words to thank a teacherThink back to when you first chose your careertimestamp {font-size 12px;display block;color #999;} p Just plan to have the food cooked at least an hour and a half before the game startstimestamp {font-size 12px;display block;color #999;} p -Wikipedia Dad may have to look for a second job Whatever the drink of choice for the party is, be sure to have plenty on handname { font-weight bold; } div During the War of 1812, the Capitol and the White House in Washington was burned down by the British Namely, NASCAR Michael Turner Jersey Prior to my contacting you, I confirmed a couple of facts about Leo Wanta/$27author img {float left; margin 0px 7px 0px 0px;} p Dallas9 I hope that CNBC continues to feature Seeking Alpha, but the process should be more disciplined Since that issue, Tebow has appeared on the cover five times as a Gator and once so far as a Denver Bronco In as short as a few weeks of use (even a few days for some), you can shed off excess pounds, lower down those cravings, and enjoy a slimmer, more attractive bodypng);background-repeat no-repeat;} p of Revenue---Tax Appeals Commission There is no way that it is easy being a cheerleader RB Donald Brown 5 10" 210 Stats atJoe Flacco Jersey Connecticut 2,083 Rushing Yards and 18 TD s The Colts are not sure if they can count on RB Joseph Addai to stay healthy for the entire season Thank you for your coverage, I hope all of us can make a contribution to return these funds to the rightful owners, the American people, and put forth to vitally needed infrastructure projects such as education, transportation!
https://w.atwiki.jp/cheapugg058/pages/16.html
Pryor also ran it in for a rushing score of his own If using Facebook is a good method of getting your message out and building your subscriber list is the ideal strategy to make money, is there any way to combine the two? Is there any way to use Facebook to create a great subscriber list?The typical way that a business person gets individuals to subscribe is by putting a opt-in form on their websiteauthomichael kors online r {line-height 22px;color #666;font-family Arial, Helvetica, sans-serif;} My facts and this story implicates former Gov Tailgating can be very enjoyableMarino appeared on the 27th position in the List of 100 Greatest Football Players Everybody was completely muddy, so muddy you couldn t see who was wearing what uniformmetadata span There are painted batting helmets that have flaming skulls, baseballs with growling faces and even depictions of famous players in action painted directly on the helmettwitter-inner-ditto238301605173284864 { background #fff; padding 10px 12px 10px 30px; margin 0; min-height 48px; color #000; font-size 22px !important; font-family Georgia, "Times New Roman", Times, serif; line-height 30px; -moz-border-radius 5px;www.michaelkorsoutletzc.com -webkit-border-radius 5px; } div The software has made it possible for me to watch the National Football League matches from virtually anywhere Sirius has over 125 commercial free channels2 rushing yards per game, second only to Nevada in the NCAA Football Bowl Subdivisioncom/profile_background_images/403364355/Twitter_IndyBG This year s first pick may be one of the biggest blunders in many years2012 (Monday) (Local Time)VolleyballMichael Turner Jersey Women s preliminariesChina v Turkey (09 30)Serbia v South Korea (11 30)Dominican Republic v Russia (14 45)USA v Brazil (16 45)Italy v Japan (20 00)Great Britain v Algeria (22 00)Sports fans and supporters around the globe watch London Olympic 2012 all game Live Streaming upauthor {line-height 20px;color #333;font-family Arial, Helvetica, sans-serif;} Instead a photographer will highlight your best features t[[Rob Gronkowski Jersey http //www.patriotsnflofficialstore.com]] o create a beautiful shot04 Earnings $1Tony ShaloubThis season ticket holder has more Emmys than youNFL Divisional Playoff Predictions This week it stands to reason that the task I face is far more daunting than the last She has also had a line of shoes and jewelry Restoring and maintaining resilience is often a matter of being in close contact with your physical and emotional statusCditto184461049246912513{background #9AE4E8Rob Gronkowski Jersey Rush sold concert tickets to 37 markets in the United States and Canadatwitter-inner-ditto221997961155067904 div Phillips seemed to be the star of the show last night, with way more camera time than Sanchez, although her simple rendition of “I Will Always Love You” rocked the house down and gave her fans some hope that perhaps she would sweep the night after allGetting cheap software discounts does not mean that the product you are getting is cheap and ill-madetimestamp a Just plan to have the food cooked at least an hour and a half before the game starts2012 National Football League Pre-Season Schedule (All times Eastern)Sunday, August 5Arizona vsreply span {background-position 0px 3px;} p Tommy Thompson (in bush s cabinet in Dept Hot subs such as meatball, pulled pork and Philly cheese steak are hot on the menu of many tailgaters Managing the promotional programs for the players and teamstimestamp {font-size 12px;display block;color #999;} pretweet span {background-position -80px 3px;} p He was in the mood to celebrate In the words of Jack Welch, former CEO of GE, "When you take on a leadership role, it s no longer about you, it s about themretweet span {background-position -80px 3px;} p Other than that, Morita was mostly a bit player, but one you would recognize on TV shows from Happy Days to Baywatch An attempt to collect and list down some of the interesting names is done in the following write updittoTweet span There are many different sites on the world wide web that need you to use interesting or cool screen names El Laberinto de la Soledad , a study of the Mexican identity and thought and his poetic works like Libertad de Pisis and Piedra de sol are some of his most famous contributions to Mexican literature It is sold in many health stores; it is even sold online through Amazon Unfortunately, the source didn’t go into very many specifics, though he did hint at something particularly good coming for those who will run iOS 6 on theMatt Ryan Jersey new iPad After that, they try to find such a source that would be reliable both in terms of originality of product as well as consistent fine-quality But I was only spending about $100 and I was sure whatever I got for that price was going to be better than the old beat up house cues that I had been using But then Sellers sprained an ankle and could not work in the cramped cockpit set3 billion at market exchange rates Yes, you read right you can go through the hiring process, both in the game and online, making it interesting and somewhat unnecessary for any but the most hardcore gamers NCAA Football 11 -Wikipedia The race, currently sponsored by Commerzbank, is Germany s oldest city marathon
https://w.atwiki.jp/api_programming/pages/104.html
下位ページ Content HTTP通信文字化けが起きた パラメータの出力 レスポンスの「確認」 basic 認証 HTTP通信 接続先のURLへ情報を送信し、結果を保存する - @IT java.net.URL HttpURLConnection URLのインスタンスを作成。ここで接続先を指定する。 URLのインスタンスのopenConnectionで接続HttpURLConnectionを作成 パラメータはOutputStreamで出力するJavaによるHTTPリクエスト時のパラメータの渡し方 getResponceMessage()でレスポンスのボディを受け取る disconnect()で通信終了 URL url = new URL(strURL); HttpURLConnection con = (HttpURLConnection)url.openConnection(); connection.setDoOutput(true); connection.setUseCashes(false); connection.setRequestMethod("POST"); // 通信方法にPOSTを指定 // パラメータ送信 OutputStream os = uc.getOutputStream(); // POST用のOutputStreamを取得 PrintStream ps = new PrintStream(os); String postStr = "a=1 b=2 c=3"; ps.print(postStr);// データをPOSTする ps.close(); // 受信 InputStream is = uc.getInputStream(); // POSTした結果を取得 BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String s; while ((s = reader.readLine()) != null) { System.out.println(s); reader.close(); uc.disconnect(); } 文字化けが起きた しばらく何事もなかったのに、Toodledoで新しいタスクを作成する処理を行っているときに、iPhone経由でのタスク登録にて文字化けが発生。(iPhone以外では、日本語のタスクを作成しなかった、とかではないと思うが。。。) アラートで表示 OK サーバでの受取での表示 OK Toodledo での受取 NG なので、servlet→toodledoの送信でだめ?っぽい。 文字コードをセットできる場所として PrintStream 生成時に UTF-8 を追加 [[PrintStream(java.io.OutputStream, boolean, java.lang.String) https //docs.oracle.com/javase/jp/6/api/java/io/PrintStream.html#PrintStream(java.io.OutputStream, boolean, java.lang.String)]] で、正常動作(文字化け回避)になった。 パラメータの出力 パラメータはOutputStreamで出力する (HttpURLConnection).getOutputStream でもOutputStreamはバイト文字列で表記とか、使いづらい。 当初、PrintWriterクラスを使っていたが、日本語を使う必要が出た際に、文字化けで詰まったので、 OutputStreamWriterクラスを使うようにした。 OutputStreamWriter osw = new OutputStreamWriter(connection.gerOutputStream(),"UTF-8"); osw.write(str); osw.close(); OutputStreamWriter PrintWriterを使うのが便利。 JavaによるHTTPリクエスト時のパラメータの渡し方 レスポンスの「確認」 System.err.println(httpcon.getResponseCode()) // 戻り値はint System.err.println(httpcon.getResponseMessage()) getResponseCode() getResponseMessage() HTTPステータスコード - Wikipedia basic 認証 http //x68000.q-e-d.net/~68user/net/java-http-url-connection-2.html https //developer.android.com/reference/android/util/Base64.html http //www.programing-style.com/android/android-api/android-basic-authentication/ 正式な?方法があるらしいが、代替的な方法で、client_id と client_secret をパラメータとして渡す方法もあるらしい。
https://w.atwiki.jp/feedback1970/pages/57.html
memo source 1 /* Licensed to the Apache Software Foundation (ASF) under one or more 2 * contributor license agreements. See the NOTICE file distributed with 3 * this work for additional information regarding copyright ownership. 4 * The ASF licenses this file to You under the Apache License, Version 2.0 5 * (the "License"); you may not use this file except in compliance with 6 * the License. You may obtain a copy of the License at 7 * 8 * http //www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef APACHE_HTTP_CONFIG_H 18 #define APACHE_HTTP_CONFIG_H 19 20 #include "apr_hooks.h" 21 #include "util_cfgtree.h" 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /** 28 * @file http_config.h 29 * @brief Apache Configuration 30 */ 31 32 /* 33 * The central data structures around here... 34 */ 35 36 /* Command dispatch structures... */ 37 38 /** 39 * How the directives arguments should be parsed. 40 * @remark Note that for all of these except RAW_ARGS, the config routine is 41 * passed a freshly allocated string which can be modified or stored 42 * or whatever... 43 */ 44 enum cmd_how { 45 RAW_ARGS, /** cmd_func parses command line itself */ 46 TAKE1, /** one argument only */ 47 TAKE2, /** two arguments only */ 48 ITERATE, /** one argument, occuring multiple times 49 * (e.g., IndexIgnore) 50 */ 51 ITERATE2, /** two arguments, 2nd occurs multiple times 52 * (e.g., AddIcon) 53 */ 54 FLAG, /** One of On or Off */ 55 NO_ARGS, /** No args at all, e.g. /Directory */ 56 TAKE12, /** one or two arguments */ 57 TAKE3, /** three arguments only */ 58 TAKE23, /** two or three arguments */ 59 TAKE123, /** one, two or three arguments */ 60 TAKE13 /** one or three arguments */ 61 }; 62 /** 63 * This structure is passed to a command which is being invoked, 64 * to carry a large variety of miscellaneous data which is all of 65 * use to *somebody*... 66 */ 67 typedef struct cmd_parms_struct cmd_parms; 68 69 #if defined(AP_HAVE_DESIGNATED_INITIALIZER) || defined(DOXYGEN) 70 71 /** 72 * All the types of functions that can be used in directives 73 * @internal 74 */ 75 typedef union { 76 /** function to call for a no-args */ 77 const char *(*no_args) (cmd_parms *parms, void *mconfig); 78 /** function to call for a raw-args */ 79 const char *(*raw_args) (cmd_parms *parms, void *mconfig, 80 const char *args); 81 /** function to call for a take1 */ 82 const char *(*take1) (cmd_parms *parms, void *mconfig, const char *w); 83 /** function to call for a take2 */ 84 const char *(*take2) (cmd_parms *parms, void *mconfig, const char *w, 85 const char *w2); 86 /** function to call for a take3 */ 87 const char *(*take3) (cmd_parms *parms, void *mconfig, const char *w, 88 const char *w2, const char *w3); 89 /** function to call for a flag */ 90 const char *(*flag) (cmd_parms *parms, void *mconfig, int on); 91 } cmd_func; 92 93 /** This configuration directive does not take any arguments */ 94 # define AP_NO_ARGS func.no_args 95 /** This configuration directive will handle it s own parsing of arguments*/ 96 # define AP_RAW_ARGS func.raw_args 97 /** This configuration directive takes 1 argument*/ 98 # define AP_TAKE1 func.take1 99 /** This configuration directive takes 2 arguments */ 100 # define AP_TAKE2 func.take2 101 /** This configuration directive takes 3 arguments */ 102 # define AP_TAKE3 func.take3 103 /** This configuration directive takes a flag (on/off) as a argument*/ 104 # define AP_FLAG func.flag 105 106 /** method of declaring a directive with no arguments */ 107 # define AP_INIT_NO_ARGS(directive, func, mconfig, where, help) \ 108 { directive, { .no_args=func }, mconfig, where, RAW_ARGS, help } 109 /** method of declaring a directive with raw argument parsing */ 110 # define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help) \ 111 { directive, { .raw_args=func }, mconfig, where, RAW_ARGS, help } 112 /** method of declaring a directive which takes 1 argument */ 113 # define AP_INIT_TAKE1(directive, func, mconfig, where, help) \ 114 { directive, { .take1=func }, mconfig, where, TAKE1, help } 115 /** method of declaring a directive which takes multiple arguments */ 116 # define AP_INIT_ITERATE(directive, func, mconfig, where, help) \ 117 { directive, { .take1=func }, mconfig, where, ITERATE, help } 118 /** method of declaring a directive which takes 2 arguments */ 119 # define AP_INIT_TAKE2(directive, func, mconfig, where, help) \ 120 { directive, { .take2=func }, mconfig, where, TAKE2, help } 121 /** method of declaring a directive which takes 1 or 2 arguments */ 122 # define AP_INIT_TAKE12(directive, func, mconfig, where, help) \ 123 { directive, { .take2=func }, mconfig, where, TAKE12, help } 124 /** method of declaring a directive which takes multiple 2 arguments */ 125 # define AP_INIT_ITERATE2(directive, func, mconfig, where, help) \ 126 { directive, { .take2=func }, mconfig, where, ITERATE2, help } 127 /** method of declaring a directive which takes 1 or 3 arguments */ 128 # define AP_INIT_TAKE13(directive, func, mconfig, where, help) \ 129 { directive, { .take3=func }, mconfig, where, TAKE13, help } 130 /** method of declaring a directive which takes 2 or 3 arguments */ 131 # define AP_INIT_TAKE23(directive, func, mconfig, where, help) \ 132 { directive, { .take3=func }, mconfig, where, TAKE23, help } 133 /** method of declaring a directive which takes 1 to 3 arguments */ 134 # define AP_INIT_TAKE123(directive, func, mconfig, where, help) \ 135 { directive, { .take3=func }, mconfig, where, TAKE123, help } 136 /** method of declaring a directive which takes 3 arguments */ 137 # define AP_INIT_TAKE3(directive, func, mconfig, where, help) \ 138 { directive, { .take3=func }, mconfig, where, TAKE3, help } 139 /** method of declaring a directive which takes a flag (on/off) as a argument*/ 140 # define AP_INIT_FLAG(directive, func, mconfig, where, help) \ 141 { directive, { .flag=func }, mconfig, where, FLAG, help } 142 143 #else /* AP_HAVE_DESIGNATED_INITIALIZER */ 144 145 typedef const char *(*cmd_func) (); 146 147 # define AP_NO_ARGS func 148 # define AP_RAW_ARGS func 149 # define AP_TAKE1 func 150 # define AP_TAKE2 func 151 # define AP_TAKE3 func 152 # define AP_FLAG func 153 154 # define AP_INIT_NO_ARGS(directive, func, mconfig, where, help) \ 155 { directive, func, mconfig, where, RAW_ARGS, help } 156 # define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help) \ 157 { directive, func, mconfig, where, RAW_ARGS, help } 158 # define AP_INIT_TAKE1(directive, func, mconfig, where, help) \ 159 { directive, func, mconfig, where, TAKE1, help } 160 # define AP_INIT_ITERATE(directive, func, mconfig, where, help) \ 161 { directive, func, mconfig, where, ITERATE, help } 162 # define AP_INIT_TAKE2(directive, func, mconfig, where, help) \ 163 { directive, func, mconfig, where, TAKE2, help } 164 # define AP_INIT_TAKE12(directive, func, mconfig, where, help) \ 165 { directive, func, mconfig, where, TAKE12, help } 166 # define AP_INIT_ITERATE2(directive, func, mconfig, where, help) \ 167 { directive, func, mconfig, where, ITERATE2, help } 168 # define AP_INIT_TAKE13(directive, func, mconfig, where, help) \ 169 { directive, func, mconfig, where, TAKE13, help } 170 # define AP_INIT_TAKE23(directive, func, mconfig, where, help) \ 171 { directive, func, mconfig, where, TAKE23, help } 172 # define AP_INIT_TAKE123(directive, func, mconfig, where, help) \ 173 { directive, func, mconfig, where, TAKE123, help } 174 # define AP_INIT_TAKE3(directive, func, mconfig, where, help) \ 175 { directive, func, mconfig, where, TAKE3, help } 176 # define AP_INIT_FLAG(directive, func, mconfig, where, help) \ 177 { directive, func, mconfig, where, FLAG, help } 178 179 #endif /* AP_HAVE_DESIGNATED_INITIALIZER */ 180 181 /** 182 * The command record structure. Each modules can define a table of these 183 * to define the directives it will implement. 184 */ 185 typedef struct command_struct command_rec; 186 struct command_struct { 187 /** Name of this command */ 188 const char *name; 189 /** The function to be called when this directive is parsed */ 190 cmd_func func; 191 /** Extra data, for functions which implement multiple commands... */ 192 void *cmd_data; 193 /** What overrides need to be allowed to enable this command. */ 194 int req_override; 195 /** What the command expects as arguments 196 * @defvar cmd_how args_how*/ 197 enum cmd_how args_how; 198 199 /** usage message, in case of syntax errors */ 200 const char *errmsg; 201 }; 202 203 /** 204 * @defgroup ConfigDirectives Allowed locations for configuration directives. 205 * 206 * The allowed locations for a configuration directive are the union of 207 * those indicated by each set bit in the req_override mask. 208 * 209 * @{ 210 */ 211 #define OR_NONE 0 /** *.conf is not available anywhere in this override */ 212 #define OR_LIMIT 1 /** *.conf inside Directory or Location 213 and .htaccess when AllowOverride Limit */ 214 #define OR_OPTIONS 2 /** *.conf anywhere 215 and .htaccess when AllowOverride Options */ 216 #define OR_FILEINFO 4 /** *.conf anywhere 217 and .htaccess when AllowOverride FileInfo */ 218 #define OR_AUTHCFG 8 /** *.conf inside Directory or Location 219 and .htaccess when AllowOverride AuthConfig */ 220 #define OR_INDEXES 16 /** *.conf anywhere 221 and .htaccess when AllowOverride Indexes */ 222 #define OR_UNSET 32 /** unset a directive (in Allow) */ 223 #define ACCESS_CONF 64 /** *.conf inside Directory or Location */ 224 #define RSRC_CONF 128 /** *.conf outside Directory or Location */ 225 #define EXEC_ON_READ 256 /** force directive to execute a command 226 which would modify the configuration (like including another 227 file, or IFModule */ 228 /** this directive can be placed anywhere */ 229 #define OR_ALL (OR_LIMIT|OR_OPTIONS|OR_FILEINFO|OR_AUTHCFG|OR_INDEXES) 230 231 /** @} */ 232 233 /** 234 * This can be returned by a function if they don t wish to handle 235 * a command. Make it something not likely someone will actually use 236 * as an error code. 237 */ 238 #define DECLINE_CMD "\a\b" 239 240 /** Common structure for reading of config files / passwd files etc. */ 241 typedef struct ap_configfile_t ap_configfile_t; 242 struct ap_configfile_t { 243 int (*getch) (void *param); /** a getc()-like function */ 244 void *(*getstr) (void *buf, size_t bufsiz, void *param); 245 /** a fgets()-like function */ 246 int (*close) (void *param); /** a close handler function */ 247 void *param; /** the argument passed to getch/getstr/close */ 248 const char *name; /** the filename / description */ 249 unsigned line_number; /** current line number, starting at 1 */ 250 }; 251 252 /** 253 * This structure is passed to a command which is being invoked, 254 * to carry a large variety of miscellaneous data which is all of 255 * use to *somebody*... 256 */ 257 struct cmd_parms_struct { 258 /** Argument to command from cmd_table */ 259 void *info; 260 /** Which allow-override bits are set */ 261 int override; 262 /** Which methods are Limit ed */ 263 apr_int64_t limited; 264 /** methods which are limited */ 265 apr_array_header_t *limited_xmethods; 266 /** methods which are xlimited */ 267 ap_method_list_t *xlimited; 268 269 /** Config file structure. */ 270 ap_configfile_t *config_file; 271 /** the directive specifying this command */ 272 ap_directive_t *directive; 273 274 /** Pool to allocate new storage in */ 275 apr_pool_t *pool; 276 /** Pool for scratch memory; persists during configuration, but 277 * wiped before the first request is served... */ 278 apr_pool_t *temp_pool; 279 /** Server_rec being configured for */ 280 server_rec *server; 281 /** If configuring for a directory, pathname of that directory. 282 * NOPE! That s what it meant previous to the existance of Files , 283 * Location and regex matching. Now the only usefulness that can be 284 * derived from this field is whether a command is being called in a 285 * server context (path == NULL) or being called in a dir context 286 * (path != NULL). */ 287 char *path; 288 /** configuration command */ 289 const command_rec *cmd; 290 291 /** per_dir_config vector passed to handle_command */ 292 struct ap_conf_vector_t *context; 293 /** directive with syntax error */ 294 const ap_directive_t *err_directive; 295 }; 296 297 /** 298 * Module structures. Just about everything is dispatched through 299 * these, directly or indirectly (through the command and handler 300 * tables). 301 */ 302 typedef struct module_struct module; 303 struct module_struct { 304 /** API version, *not* module version; check that module is 305 * compatible with this version of the server. 306 */ 307 int version; 308 /** API minor version. Provides API feature milestones. Not checked 309 * during module init */ 310 int minor_version; 311 /** Index to this modules structures in config vectors. */ 312 int module_index; 313 314 /** The name of the module s C file */ 315 const char *name; 316 /** The handle for the DSO. Internal use only */ 317 void *dynamic_load_handle; 318 319 /** A pointer to the next module in the list 320 * @defvar module_struct *next */ 321 struct module_struct *next; 322 323 /** Magic Cookie to identify a module structure; It s mainly 324 * important for the DSO facility (see also mod_so). */ 325 unsigned long magic; 326 327 /** Function to allow MPMs to re-write command line arguments. This 328 * hook is only available to MPMs. 329 * @param The process that the server is running in. 330 */ 331 void (*rewrite_args) (process_rec *process); 332 /** Function to allow all modules to create per directory configuration 333 * structures. 334 * @param p The pool to use for all allocations. 335 * @param dir The directory currently being processed. 336 * @return The per-directory structure created 337 */ 338 void *(*create_dir_config) (apr_pool_t *p, char *dir); 339 /** Function to allow all modules to merge the per directory configuration 340 * structures for two directories. 341 * @param p The pool to use for all allocations. 342 * @param base_conf The directory structure created for the parent directory. 343 * @param new_conf The directory structure currently being processed. 344 * @return The new per-directory structure created 345 */ 346 void *(*merge_dir_config) (apr_pool_t *p, void *base_conf, void *new_conf); 347 /** Function to allow all modules to create per server configuration 348 * structures. 349 * @param p The pool to use for all allocations. 350 * @param s The server currently being processed. 351 * @return The per-server structure created 352 */ 353 void *(*create_server_config) (apr_pool_t *p, server_rec *s); 354 /** Function to allow all modules to merge the per server configuration 355 * structures for two servers. 356 * @param p The pool to use for all allocations. 357 * @param base_conf The directory structure created for the parent directory. 358 * @param new_conf The directory structure currently being processed. 359 * @return The new per-directory structure created 360 */ 361 void *(*merge_server_config) (apr_pool_t *p, void *base_conf, 362 void *new_conf); 363 364 /** A command_rec table that describes all of the directives this module 365 * defines. */ 366 const command_rec *cmds; 367 368 /** A hook to allow modules to hook other points in the request processing. 369 * In this function, modules should call the ap_hook_*() functions to 370 * register an interest in a specific step in processing the current 371 * request. 372 * @param p the pool to use for all allocations 373 */ 374 void (*register_hooks) (apr_pool_t *p); 375 }; 376 377 /** 378 * @defgroup ModuleInit Module structure initializers 379 * 380 * Initializer for the first few module slots, which are only 381 * really set up once we start running. Note that the first two slots 382 * provide a version check; this should allow us to deal with changes to 383 * the API. The major number should reflect changes to the API handler table 384 * itself or removal of functionality. The minor number should reflect 385 * additions of functionality to the existing API. (the server can detect 386 * an old-format module, and either handle it back-compatibly, or at least 387 * signal an error). See src/include/ap_mmn.h for MMN version history. 388 * @{ 389 */ 390 391 /** The one used in Apache 1.3, which will deliberately cause an error */ 392 #define STANDARD_MODULE_STUFF this_module_needs_to_be_ported_to_apache_2_0 393 394 /** Use this in all standard modules */ 395 #define STANDARD20_MODULE_STUFF MODULE_MAGIC_NUMBER_MAJOR, \ 396 MODULE_MAGIC_NUMBER_MINOR, \ 397 -1, \ 398 __FILE__, \ 399 NULL, \ 400 NULL, \ 401 MODULE_MAGIC_COOKIE, \ 402 NULL /* rewrite args spot */ 403 404 /** Use this only in MPMs */ 405 #define MPM20_MODULE_STUFF MODULE_MAGIC_NUMBER_MAJOR, \ 406 MODULE_MAGIC_NUMBER_MINOR, \ 407 -1, \ 408 __FILE__, \ 409 NULL, \ 410 NULL, \ 411 MODULE_MAGIC_COOKIE 412 413 /** @} */ 414 415 /* CONFIGURATION VECTOR FUNCTIONS */ 416 417 /** configuration vector structure */ 418 typedef struct ap_conf_vector_t ap_conf_vector_t; 419 420 /** 421 * Generic accessors for other modules to get at their own module-specific 422 * data 423 * @param conf_vector The vector in which the modules configuration is stored. 424 * usually r- per_dir_config or s- module_config 425 * @param m The module to get the data for. 426 * @return The module-specific data 427 */ 428 AP_DECLARE(void *) ap_get_module_config(const ap_conf_vector_t *cv, 429 const module *m); 430 431 /** 432 * Generic accessors for other modules to set at their own module-specific 433 * data 434 * @param conf_vector The vector in which the modules configuration is stored. 435 * usually r- per_dir_config or s- module_config 436 * @param m The module to set the data for. 437 * @param val The module-specific data to set 438 */ 439 AP_DECLARE(void) ap_set_module_config(ap_conf_vector_t *cv, const module *m, 440 void *val); 441 442 #if !defined(AP_DEBUG) 443 444 #define ap_get_module_config(v,m) \ 445 (((void **)(v))[(m)- module_index]) 446 #define ap_set_module_config(v,m,val) \ 447 ((((void **)(v))[(m)- module_index]) = (val)) 448 449 #endif /* AP_DEBUG */ 450 451 452 /** 453 * Generic command handling function for strings 454 * @param cmd The command parameters for this directive 455 * @param struct_ptr pointer into a given type 456 * @param arg The argument to the directive 457 * @return An error string or NULL on success 458 */ 459 AP_DECLARE_NONSTD(const char *) ap_set_string_slot(cmd_parms *cmd, 460 void *struct_ptr, 461 const char *arg); 462 463 /** 464 * Generic command handling function for integers 465 * @param cmd The command parameters for this directive 466 * @param struct_ptr pointer into a given type 467 * @param arg The argument to the directive 468 * @return An error string or NULL on success 469 */ 470 AP_DECLARE_NONSTD(const char *) ap_set_int_slot(cmd_parms *cmd, 471 void *struct_ptr, 472 const char *arg); 473 474 /** 475 * Return true if the specified method is limited by being listed in 476 * a Limit container, or by *not* being listed in a LimiteExcept 477 * container. 478 * 479 * @param method Pointer to a string specifying the method to check. 480 * @param cmd Pointer to the cmd_parms structure passed to the 481 * directive handler. 482 * @return 0 if the method is not limited in the current scope 483 */ 484 AP_DECLARE(int) ap_method_is_limited(cmd_parms *cmd, const char *method); 485 486 /** 487 * Generic command handling function for strings, always sets the value 488 * to a lowercase string 489 * @param cmd The command parameters for this directive 490 * @param struct_ptr pointer into a given type 491 * @param arg The argument to the directive 492 * @return An error string or NULL on success 493 */ 494 AP_DECLARE_NONSTD(const char *) ap_set_string_slot_lower(cmd_parms *cmd, 495 void *struct_ptr, 496 const char *arg); 497 /** 498 * Generic command handling function for flags 499 * @param cmd The command parameters for this directive 500 * @param struct_ptr pointer into a given type 501 * @param arg The argument to the directive (either 1 or 0) 502 * @return An error string or NULL on success 503 */ 504 AP_DECLARE_NONSTD(const char *) ap_set_flag_slot(cmd_parms *cmd, 505 void *struct_ptr, 506 int arg); 507 /** 508 * Generic command handling function for files 509 * @param cmd The command parameters for this directive 510 * @param struct_ptr pointer into a given type 511 * @param arg The argument to the directive 512 * @return An error string or NULL on success 513 */ 514 AP_DECLARE_NONSTD(const char *) ap_set_file_slot(cmd_parms *cmd, 515 void *struct_ptr, 516 const char *arg); 517 /** 518 * Generic command handling function to respond with cmd- help as an error 519 * @param cmd The command parameters for this directive 520 * @param struct_ptr pointer into a given type 521 * @param arg The argument to the directive 522 * @return The cmd- help value as the error string 523 * @tip This allows simple declarations such as; 524 * pre 525 * AP_INIT_RAW_ARGS("Foo", ap_set_deprecated, NULL, OR_ALL, 526 * "The Foo directive is no longer supported, use Bar"), 527 * /pre 528 */ 529 AP_DECLARE_NONSTD(const char *) ap_set_deprecated(cmd_parms *cmd, 530 void *struct_ptr, 531 const char *arg); 532 /** 533 * For modules which need to read config files, open logs, etc. this returns 534 * the canonical form of fname made absolute to ap_server_root. 535 * @param p pool to allocate data from 536 * @param fname The file name 537 */ 538 AP_DECLARE(char *) ap_server_root_relative(apr_pool_t *p, const char *fname); 539 540 /* Finally, the hook for dynamically loading modules in... */ 541 542 /** 543 * Add a module to the server 544 * @param m The module structure of the module to add 545 * @param p The pool of the same lifetime as the module 546 */ 547 AP_DECLARE(void) ap_add_module(module *m, apr_pool_t *p); 548 549 /** 550 * Remove a module from the server. There are some caveats 551 * when the module is removed, its slot is lost so all the current 552 * per-dir and per-server configurations are invalid. So we should 553 * only ever call this function when you are invalidating almost 554 * all our current data. I.e. when doing a restart. 555 * @param m the module structure of the module to remove 556 */ 557 AP_DECLARE(void) ap_remove_module(module *m); 558 /** 559 * Add a module to the chained modules list and the list of loaded modules 560 * @param m The module structure of the module to add 561 * @param p The pool with the same lifetime as the module 562 */ 563 AP_DECLARE(void) ap_add_loaded_module(module *mod, apr_pool_t *p); 564 /** 565 * Remove a module fromthe chained modules list and the list of loaded modules 566 * @param m the module structure of the module to remove 567 */ 568 AP_DECLARE(void) ap_remove_loaded_module(module *mod); 569 /** 570 * Add a module to the list of loaded module based on the name of the 571 * module 572 * @param name The name of the module 573 * @param p The pool valid for the lifetime of the module 574 * @return 1 on success, 0 on failure 575 */ 576 AP_DECLARE(int) ap_add_named_module(const char *name, apr_pool_t *p); 577 /** 578 * Find the name of the specified module 579 * @param m The module to get the name for 580 * @return the name of the module 581 */ 582 AP_DECLARE(const char *) ap_find_module_name(module *m); 583 /** 584 * Find a module based on the name of the module 585 * @param name the name of the module 586 * @return the module structure if found, NULL otherwise 587 */ 588 AP_DECLARE(module *) ap_find_linked_module(const char *name); 589 590 /** 591 * Open a ap_configfile_t as apr_file_t 592 * @param ret_cfg open ap_configfile_t struct pointer 593 * @param p The pool to allocate the structure from 594 * @param name the name of the file to open 595 */ 596 AP_DECLARE(apr_status_t) ap_pcfg_openfile(ap_configfile_t **ret_cfg, 597 apr_pool_t *p, const char *name); 598 599 /** 600 * Allocate a ap_configfile_t handle with user defined functions and params 601 * @param p The pool to allocate from 602 * @param descr The name of the file 603 * @param param The argument passed to getch/getstr/close 604 * @param getc_func The getch function 605 * @param gets_func The getstr function 606 * @param close_func The close function 607 */ 608 AP_DECLARE(ap_configfile_t *) ap_pcfg_open_custom(apr_pool_t *p, 609 const char *descr, 610 void *param, 611 int(*getc_func)(void*), 612 void *(*gets_func) (void *buf, size_t bufsiz, void *param), 613 int(*close_func)(void *param)); 614 615 /** 616 * Read one line from open ap_configfile_t, strip LF, increase line number 617 * @param buf place to store the line read 618 * @param bufsize size of the buffer 619 * @param cfp File to read from 620 * @return 1 on success, 0 on failure 621 */ 622 AP_DECLARE(int) ap_cfg_getline(char *buf, size_t bufsize, ap_configfile_t *cfp); 623 624 /** 625 * Read one char from open configfile_t, increase line number upon LF 626 * @param cfp The file to read from 627 * @return the character read 628 */ 629 AP_DECLARE(int) ap_cfg_getc(ap_configfile_t *cfp); 630 631 /** 632 * Detach from open ap_configfile_t, calling the close handler 633 * @param cfp The file to close 634 * @return 1 on sucess, 0 on failure 635 */ 636 AP_DECLARE(int) ap_cfg_closefile(ap_configfile_t *cfp); 637 638 /** 639 * Read all data between the current foo and the matching /foo . All 640 * of this data is forgotten immediately. 641 * @param cmd The cmd_parms to pass to the directives inside the container 642 * @param directive The directive name to read until 643 * @return Error string on failure, NULL on success 644 */ 645 AP_DECLARE(const char *) ap_soak_end_container(cmd_parms *cmd, char *directive); 646 647 /** 648 * Read all data between the current foo and the matching /foo and build 649 * a config tree from it 650 * @param p pool to allocate from 651 * @param temp_pool Temporary pool to allocate from 652 * @param parms The cmd_parms to pass to all directives read 653 * @param current The current node in the tree 654 * @param curr_parent The current parent node 655 * @param orig_directive The directive to read until hit. 656 * @return Error string on failure, NULL on success 657 */ 658 AP_DECLARE(const char *) ap_build_cont_config(apr_pool_t *p, 659 apr_pool_t *temp_pool, 660 cmd_parms *parms, 661 ap_directive_t **current, 662 ap_directive_t **curr_parent, 663 char *orig_directive); 664 665 /** 666 * Build a config tree from a config file 667 * @param parms The cmd_parms to pass to all of the directives in the file 668 * @param conf_pool The pconf pool 669 * @param temp_pool The temporary pool 670 * @param conftree Place to store the root node of the config tree 671 * @return Error string on erro, NULL otherwise 672 */ 673 AP_DECLARE(const char *) ap_build_config(cmd_parms *parms, 674 apr_pool_t *conf_pool, 675 apr_pool_t *temp_pool, 676 ap_directive_t **conftree); 677 678 /** 679 * Walk a config tree and setup the server s internal structures 680 * @param conftree The config tree to walk 681 * @param parms The cmd_parms to pass to all functions 682 * @param section_vector The per-section config vector. 683 * @return Error string on error, NULL otherwise 684 */ 685 AP_DECLARE(const char *) ap_walk_config(ap_directive_t *conftree, 686 cmd_parms *parms, 687 ap_conf_vector_t *section_vector); 688 689 /** 690 * @defgroup ap_check_cmd_context ap_check_cmd_context 691 * @{ 692 */ 693 /** 694 * Check the context a command is used in. 695 * @param cmd The command to check 696 * @param forbidden Where the command is forbidden. 697 * @return Error string on error, NULL on success 698 */ 699 AP_DECLARE(const char *) ap_check_cmd_context(cmd_parms *cmd, 700 unsigned forbidden); 701 702 #define NOT_IN_VIRTUALHOST 0x01 /** Forbidden in Virtualhost */ 703 #define NOT_IN_LIMIT 0x02 /** Forbidden in Limit */ 704 #define NOT_IN_DIRECTORY 0x04 /** Forbidden in Directory */ 705 #define NOT_IN_LOCATION 0x08 /** Forbidden in Location */ 706 #define NOT_IN_FILES 0x10 /** Forbidden in Files */ 707 /** Forbidden in Directory / Location / Files */ 708 #define NOT_IN_DIR_LOC_FILE (NOT_IN_DIRECTORY|NOT_IN_LOCATION|NOT_IN_FILES) 709 /** Forbidden in VirtualHost / Limit / Directory / Location / Files */ 710 #define GLOBAL_ONLY (NOT_IN_VIRTUALHOST|NOT_IN_LIMIT|NOT_IN_DIR_LOC_FILE) 711 712 /** @} */ 713 714 #ifdef CORE_PRIVATE 715 716 /** 717 * The topmost module in the list 718 * @defvar module *ap_top_module 719 */ 720 AP_DECLARE_DATA extern module *ap_top_module; 721 722 /** 723 * Array of all statically linked modules 724 * @defvar module *ap_prelinked_modules[] 725 */ 726 AP_DECLARE_DATA extern module *ap_prelinked_modules[]; 727 /** 728 * Array of all preloaded modules 729 * @defvar module *ap_preloaded_modules[] 730 */ 731 AP_DECLARE_DATA extern module *ap_preloaded_modules[]; 732 /** 733 * Array of all loaded modules 734 * @defvar module **ap_loaded_modules 735 */ 736 AP_DECLARE_DATA extern module **ap_loaded_modules; 737 738 /* For mod_so.c... */ 739 /** Run a single module s two create_config hooks 740 * @param p the pool to allocate from 741 * @param s The server to configure for. 742 * @param m The module to configure 743 */ 744 AP_DECLARE(void) ap_single_module_configure(apr_pool_t *p, server_rec *s, 745 module *m); 746 747 /* For http_main.c... */ 748 /** 749 * Add all of the prelinked modules into the loaded module list 750 * @param process The process that is currently running the server 751 */ 752 AP_DECLARE(void) ap_setup_prelinked_modules(process_rec *process); 753 754 /** 755 * Show the preloaded configuration directives, the help string explaining 756 * the directive arguments, in what module they are handled, and in 757 * what parts of the configuration they are allowed. Used for httpd -h. 758 */ 759 AP_DECLARE(void) ap_show_directives(void); 760 761 /** 762 * Show the preloaded module names. Used for httpd -l. 763 */ 764 AP_DECLARE(void) ap_show_modules(void); 765 766 /** 767 * Show the MPM name. Used in reporting modules such as mod_info to 768 * provide extra information to the user 769 */ 770 AP_DECLARE(const char *) ap_show_mpm(void); 771 772 /** 773 * Read all config files and setup the server 774 * @param process The process running the server 775 * @param temp_pool A pool to allocate temporary data from. 776 * @param config_name The name of the config file 777 * @param conftree Place to store the root of the config tree 778 * @return The setup server_rec list. 779 */ 780 AP_DECLARE(server_rec *) ap_read_config(process_rec *process, 781 apr_pool_t *temp_pool, 782 const char *config_name, 783 ap_directive_t **conftree); 784 785 /** 786 * Run all rewrite args hooks for loaded modules 787 * @param process The process currently running the server 788 */ 789 AP_DECLARE(void) ap_run_rewrite_args(process_rec *process); 790 791 /** 792 * Run the register hooks function for a specified module 793 * @param m The module to run the register hooks function fo 794 * @param p The pool valid for the lifetime of the module 795 */ 796 AP_DECLARE(void) ap_register_hooks(module *m, apr_pool_t *p); 797 798 /** 799 * Setup all virtual hosts 800 * @param p The pool to allocate from 801 * @param main_server The head of the server_rec list 802 */ 803 AP_DECLARE(void) ap_fixup_virtual_hosts(apr_pool_t *p, 804 server_rec *main_server); 805 806 /* For http_request.c... */ 807 808 /** 809 * Setup the config vector for a request_rec 810 * @param p The pool to allocate the config vector from 811 * @return The config vector 812 */ 813 AP_CORE_DECLARE(ap_conf_vector_t*) ap_create_request_config(apr_pool_t *p); 814 815 /** 816 * Setup the config vector for per dir module configs 817 * @param p The pool to allocate the config vector from 818 * @return The config vector 819 */ 820 AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_per_dir_config(apr_pool_t *p); 821 822 /** 823 * Run all of the modules merge per dir config functions 824 * @param p The pool to pass to the merge functions 825 * @param base The base directory config structure 826 * @param new_conf The new directory config structure 827 */ 828 AP_CORE_DECLARE(ap_conf_vector_t*) ap_merge_per_dir_configs(apr_pool_t *p, 829 ap_conf_vector_t *base, 830 ap_conf_vector_t *new_conf); 831 832 /* For http_connection.c... */ 833 /** 834 * Setup the config vector for a connection_rec 835 * @param p The pool to allocate the config vector from 836 * @return The config vector 837 */ 838 AP_CORE_DECLARE(ap_conf_vector_t*) ap_create_conn_config(apr_pool_t *p); 839 840 /* For http_core.c... ( Directory command and virtual hosts) */ 841 842 /** 843 * parse an htaccess file 844 * @param resulting htaccess_result 845 * @param r The request currently being served 846 * @param override Which overrides are active 847 * @param path The path to the htaccess file 848 * @param access_name The list of possible names for .htaccess files 849 * int The status of the current request 850 */ 851 AP_CORE_DECLARE(int) ap_parse_htaccess(ap_conf_vector_t **result, 852 request_rec *r, int override, 853 const char *path, 854 const char *access_name); 855 856 /** 857 * Setup a virtual host 858 * @param p The pool to allocate all memory from 859 * @param hostname The hostname of the virtual hsot 860 * @param main_server The main server for this Apache configuration 861 * @param ps Place to store the new server_rec 862 * return Error string on error, NULL on success 863 */ 864 AP_CORE_DECLARE(const char *) ap_init_virtual_host(apr_pool_t *p, 865 const char *hostname, 866 server_rec *main_server, 867 server_rec **); 868 869 /** 870 * Process the config file for Apache 871 * @param s The server rec to use for the command parms 872 * @param fname The name of the config file 873 * @param conftree The root node of the created config tree 874 * @param p Pool for general allocation 875 * @param ptem Pool for temporary allocation 876 */ 877 AP_DECLARE(void) ap_process_resource_config(server_rec *s, const char *fname, 878 ap_directive_t **conftree, 879 apr_pool_t *p, apr_pool_t *ptemp); 880 881 /** 882 * Process all directives in the config tree 883 * @param s The server rec to use in the command parms 884 * @param conftree The config tree to process 885 * @param p The pool for general allocation 886 * @param ptemp The pool for temporary allocations 887 */ 888 AP_DECLARE(void) ap_process_config_tree(server_rec *s, ap_directive_t *conftree, 889 apr_pool_t *p, apr_pool_t *ptemp); 890 891 /* Module-method dispatchers, also for http_request.c */ 892 /** 893 * Run the handler phase of each module until a module accepts the 894 * responsibility of serving the request 895 * @param r The current request 896 * @return The status of the current request 897 */ 898 AP_CORE_DECLARE(int) ap_invoke_handler(request_rec *r); 899 900 /* for mod_perl */ 901 902 /** 903 * Find a given directive in a command_rec table 904 * @param name The directive to search for 905 * @param cmds The table to search 906 * @return The directive definition of the specified directive 907 */ 908 AP_CORE_DECLARE(const command_rec *) ap_find_command(const char *name, 909 const command_rec *cmds); 910 911 /** 912 * Find a given directive in a list module 913 * @param cmd_name The directive to search for 914 * @param mod The module list to search 915 * @return The directive definition of the specified directive 916 */ 917 AP_CORE_DECLARE(const command_rec *) ap_find_command_in_modules(const char *cmd_name, 918 module **mod); 919 920 /** 921 * Ask a module to create per-server and per-section (dir/loc/file) configs 922 * (if it hasn t happened already). The results are stored in the server s 923 * config, and the specified per-section config vector. 924 * @param server The server to operate upon. 925 * @param section_vector The per-section config vector. 926 * @param section Which section to create a config for. 927 * @param mod The module which is defining the config data. 928 * @param pconf A pool for all configuration allocations. 929 * @return The (new) per-section config data. 930 */ 931 AP_CORE_DECLARE(void *) ap_set_config_vectors(server_rec *server, 932 ap_conf_vector_t *section_vector, 933 const char *section, 934 module *mod, apr_pool_t *pconf); 935 936 #endif 937 938 /* Hooks */ 939 940 /** 941 * Run the header parser functions for each module 942 * @param r The current request 943 * @return OK or DECLINED 944 */ 945 AP_DECLARE_HOOK(int,header_parser,(request_rec *r)) 946 947 /** 948 * Run the pre_config function for each module 949 * @param pconf The config pool 950 * @param plog The logging streams pool 951 * @param ptemp The temporary pool 952 * @return OK or DECLINED on success anything else is a error 953 */ 954 AP_DECLARE_HOOK(int,pre_config,(apr_pool_t *pconf,apr_pool_t *plog, 955 apr_pool_t *ptemp)) 956 957 958 /** 959 * Run the post_config function for each module 960 * @param pconf The config pool 961 * @param plog The logging streams pool 962 * @param ptemp The temporary pool 963 * @param s The list of server_recs 964 * @return OK or DECLINED on success anything else is a error 965 */ 966 AP_DECLARE_HOOK(int,post_config,(apr_pool_t *pconf,apr_pool_t *plog, 967 apr_pool_t *ptemp,server_rec *s)) 968 969 /** 970 * Run the open_logs functions for each module 971 * @param pconf The config pool 972 * @param plog The logging streams pool 973 * @param ptemp The temporary pool 974 * @param s The list of server_recs 975 * @return OK or DECLINED on success anything else is a error 976 */ 977 AP_DECLARE_HOOK(int,open_logs,(apr_pool_t *pconf,apr_pool_t *plog, 978 apr_pool_t *ptemp,server_rec *s)) 979 980 /** 981 * Run the child_init functions for each module 982 * @param pchild The child pool 983 * @param s The list of server_recs in this server 984 */ 985 AP_DECLARE_HOOK(void,child_init,(apr_pool_t *pchild, server_rec *s)) 986 987 /** 988 * Run the handler functions for each module 989 * @param r The request_rec 990 * @remark non-wildcard handlers should HOOK_MIDDLE, wildcard HOOK_LAST 991 */ 992 AP_DECLARE_HOOK(int,handler,(request_rec *r)) 993 994 /** 995 * Run the quick handler functions for each module. The quick_handler 996 * is run before any other requests hooks are called (location_walk, 997 * directory_walk, access checking, et. al.). This hook was added 998 * to provide a quick way to serve content from a URI keyed cache. 999 * 1000 * @param r The request_rec 1001 * @param lookup_uri Controls whether the caller actually wants content or not. 1002 * lookup is set when the quick_handler is called out of 1003 * ap_sub_req_lookup_uri() 1004 */ 1005 AP_DECLARE_HOOK(int,quick_handler,(request_rec *r, int lookup_uri)) 1006 1007 /** 1008 * Retrieve the optional functions for each module. 1009 * This is run immediately before the server starts. Optional functions should 1010 * be registered during the hook registration phase. 1011 */ 1012 AP_DECLARE_HOOK(void,optional_fn_retrieve,(void)) 1013 1014 #ifdef __cplusplus 1015 } 1016 #endif 1017 1018 #endif /* !APACHE_HTTP_CONFIG_H */