約 5,111,433 件
https://w.atwiki.jp/backpackhero/pages/32.html
【バックパックヒーロー&ムーンウォッチ Backpack-Hero-Moon-Watch (Discord)】 バグ報告、新しいアイデアの発言、Q&A、雑談などが分かれている(以下のURLから招待を受けられる) https //discord.com/invite/v7dJYk6gtw チャット名のbphはバックパックヒーロー、mwはムーンウォッチというゲームの略称。 バグ報告をする場所:bph-bugs-report と bph-bugs-discussions https //discord.com/channels/937723308969959425/1020682367326769212 新しいアイデアの発言をする場所:Backpack-Hero-ideas https //discord.com/channels/937723308969959425/944597270760914945
https://w.atwiki.jp/wiki7_5963/pages/7.html
ゲームの缶詰http //www.game-can.com/遊び
https://w.atwiki.jp/earthquakeinfo_en/pages/43.html
Jo men Jens – det var jo det han begyndte at sove fra!Og sÃ¥ endte han med at fÃ¥ en lammer – ufint – men jeg ER utilregnelig om na#t;n t8230e. Og ja – du skal have en snak med dine naboer!! Henvis du bare til mig http //gmlasuy.com [url=http //hhlfxbrrd.com]hhlfxbrrd[/url] [link=http //nopqqperw.com]nopqqperw[/link]
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/lsl_japan/pages/39.html
イベント http_response http_response(key request_id, integer status, list metadata, string body) このイベントハンドラはllHTTPRequest()関数で送信したリクエストに対して HTTPレスポンスを受信したときに発生します。 また、llHTTPRequest()関数で送信したリクエストに対してリクエストが失敗していたり、タイムアウトした時にも発生します。 request_idにはllHTTPRequest()関数の呼び出しが発生したときにllHTTPRequest()関数が返したUUIDの値が格納されます。 statusはHTTPレスポンスが返されたのか、リクエストが失敗した原因を示すHTTPステータスコードが設定されます。 499はTCPコネクションの確立が失敗したときや、コネクションが確立されても、それが無効なHTTP応答あった場合を示します。 ま、499は相手が無効なSSL証明書を持っている場合や、証明をつけてあっても、 一定時間(60秒に設定されることが多いらしい)以上経過して応答がなかった場合も499を受け取ります。 503はDNSへの問い合わせが失敗したことを示します。 #本来のHTTPにおいてはService Unavailable(サービス利用負荷)と呼ばれ、 サーバはサーバの一時的な過負荷あるいはメインテナンスのために、 現在、リクエストを扱うことができないことを意味します。 metadataは応答について説明するキーと値の組のペアがリストとして格納されます。 現在、返されるであろう唯一のキーはHTTP_BODY_TRUNCATEDです。 Valueにはイベントの受信容量の制限によって切り捨てられた情報のバイト数を示します。 応答がテキストmime-typeを指定する「content-type 」ヘッダーを含んでいる限り,bodyはHTTP応答のbodyに設定されます。 mime-typeが指定されないか、タイプがテキストタイプでないなら、bodyは「"Unsupported or unknown Content-Type." (サポートされないか未知のコンテントタイプ)」に設定されます。 「content-type 」ヘッダーで文字セットを指定すると、ボディーはUTF-8に変換されて応答するでしょう、また、サポートされてない文字コードが指定された場合は「サポートされないか未知の文字集合」に設定されるでしょう。 ボディーは現在、2048バイト以内に制限されます。 "\n"はLSLではコンパイル時に「改行文字」に変換されることを忘れないでください。 そして、あなたのサーバーが"\n"以外の文字を「改行文字」として定義されている可能性があります。 あなたは「改行」を加える適切な方法がないかどうかあなたのサーバのドキュメンテーションをチェックするべきです。 あなたのマイレージは変わるかもしれません。-Ice あなたのWEBサーバーからデーターを得る簡単なスクリプト例 //This script requests from our data source (URL) and echoes out what it sends to the owner of the script //I use this to test my PHP apps personally, it's a simple debugging application so I release it publicly //You may use, redistribute, modify, copy however you feel would be useful string URL="http //www.secondlife.com/httprequest/homepage.php"; key http;//This stores the HTTP request we send. default { [[touch_start]](integer foo) { http=llHTTPRequest(URL, [] ,""); } http_response(key id,integer status, list meta, string body) { if(http==id) { integer i; list lbody=llParseString2List(body,["\n"],[]); integer count=llGetListLength(lbody); //This turns newline characters char(10) //into new lines in chat //These are Unix/LSL style end of lines, //use \r\n in place of \n for //Windows style end of line from web server. for(i=0;i count;i++) { llOwnerSay(llList2String(lbody,i)); } } } }
https://w.atwiki.jp/mccc/pages/47.html
このページではHTTP APIについて解説する。 参考資料: HTTP API 執筆時のバージョン: ComputerCraft 1.56 for Minecraft 1.6.2 HTTP API各メソッドのヘッダ request get post HTTP API HTTPによりインターネット上のサーバーへGET/POSTリクエストを送信し、ウェブサイトをダウンロードすることができるAPI。 このAPIを利用するには、前もってComputerCraft.cfgのenableAPI_httpをtrueにしておく必要がある。設定がfalse(デフォルト)の場合、このAPI自体コンピュータに読み込まれない。 文字列をURLエンコードするにはtextutils.urlEncode関数を利用するとよい。 なお、ここでは(プロトコルとしての)HTTPについての解説は行わない。 各メソッドのヘッダ (どんなヘッダが送信されているのか気になる人向け) HTTP APIではプレイヤーが任意のヘッダを指定することはできず、またComputerCraft側でも特にヘッダを指定していないため、Javaデフォルトのヘッダで送信されているものと思われる。 以下は各メソッドで送信されるリクエスト行およびヘッダ行の例。ちなみに、ゲーム内でpastebinプログラムを利用してPastebinでプログラムファイルを取得・投稿した時のもの(Javaバージョンは1.7.0 25)。 GETの例 GET /raw.php?i=smLqWBif HTTP/1.1 User-Agent Java/1.7.0_25 Host pastebin.com Accept text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection keep-alive POSTの例 POST /api/api_post.php HTTP/1.1 User-Agent Java/1.7.0_25 Host pastebin.com Accept text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection keep-alive Content-Length 219 request dan200.computer.core.apis.HTTPAPI で定義 http.request( url[, postData]) URLurl(文字列)にHTTPリクエストを送信する。 postData(文字列)を指定すると、POSTメソッドでメッセージボディとして送信される。postDataが省略またはnilの時はGETメソッドで送信される 戻り値:nil レスポンスはos.pullEvent関数でhttp_successまたはhttp_failureイベントを捕捉することで取得する。そのため、レスポンスを非同期的に取得することができる。 例: local url = "http //example.com/" http.request(url) while true do local event, sourceUrl, file = os.pullEvent() if event == "http_success" and sourceUrl == url then print(file.readAll()) file.close() break elseif event == "http_failure" and sourceUrl == url then print("Server didn't respond.") break end end http //example.com/(IANAのExampleドメイン)からウェブページをダウンロードする。 成功した場合はページの内容(HTML)が、失敗(タイムアウト)した場合は"Server didn't respond."が表示される。 get assets\computercraft\lua\bios.lua で定義 http.get( url ) URLurl(文字列)にHTTP GETリクエストを送信し、レスポンスを取得する 戻り値:テーブル型。取得したウェブサイトのファイルハンドル。ただし、取得に失敗した場合はnilが返る リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。 例: local file = http.get("http //example.com/") if file ~= nil then print(file.readAll()) file.close() else print("Server didn't respond.") end http //example.com/(IANAのExampleドメイン)からウェブページをダウンロードする。 成功した場合はページの内容(HTML)が、失敗(タイムアウト)した場合は"Server didn't respond."が表示される。 post assets\computercraft\lua\bios.lua で定義 http.post( url, postData) URLurl(文字列)にHTTP POSTリクエストを送信し、レスポンスを取得する。postData(文字列)がメッセージボディとして送信される 戻り値:テーブル型。取得したウェブサイトのファイルハンドル。ただし、取得に失敗した場合はnilが返る リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。 postDataが省略またはnilの場合は代わりに""(長さ0文字列)が使われる。
https://w.atwiki.jp/saint_elmo/pages/65.html
Expressionとは何ぞや? Expressionを手に入れよう! Expressionの解説サイトたち Expressionの基本操作 Expressionとは何ぞや? 正式名称は『Creature House Expression』、香港のCreature House社が製作したドロー系ソフトウェア(『Adobe Illustrator』みたいなの)です。個人的には、ある面においては『Illustrator』よりも遥かに高機能なソフトだと感じています。 Creature House社は2003年に天下のMicrosoft社に買収され、現在でも『Microsoft Expression Studio』と言う名で販売されています。が、 中身は『Creature House Expression』とは似ても似つかない、全くの別ソフトになってしまいました 。 しかし私がここで紹介するのは、あくまで“Creature House版”の旧い『Expression』です。何故そんなに旧い『Expression』にこだわるのか、それは次に挙げるサンプルを御覧になればご理解いただけるのでは、と思います。 例えば、たったひとつの円にいくつかの設定を施すだけで、 5分もかからず数珠をつないだような線や縁取りを描けるようになります。工夫すれば円どころか、鎖や三つ編み模様まで楽々描けるようになります(三つ編み模様については紫幻回廊さんで実例を見ることができます)。 どうです、なんか凄そうなソフトだと思いませんか? まだ迷いがある方、こういうのは如何でしょう。 これは先ほどの、円を数珠繋ぎにする方法と同じ方法で、複数の線を縁取りにしたものです(なので線の長さが不均一です)。上手く使えばこのように、ボールが早く飛んでくる漫画表現も円ひとつで描けるようになるのです。 漫画表現といえば、Expressionでは効果線も 簡単に描けます。不均一な幅でも曲線的な効果線でも自由自在です。 私が描いたこちらのイラストでも、 http //www.pixiv.net/member_illust.php?mode=medium illust_id=15648516 この効果線を使って髪の艶を描いています。髪形に沿って艶の線が曲がっているのも、『Expression』による効果です。 もちろん基本機能でも『Adobe Illustrator』には負けていません。直線や曲線、長方形や星型と言った図形は当然ですし、 曲線に沿って文字を入れる、なんて芸当もお手の物です。 とは言え、『Expression』にも弱点はあります。最大の弱点と言えるのは、既にサポートが終了した古いソフトだと言うことでしょう。おかげで情報は少なく、ファイルの互換性にもやや難があります。そして、より高度な性能を手に入れる機会が、永遠に失われてしまっているのです(現状でも充分に高性能ではありますが)。 それでも私は、あえて『Expression』をお勧めします。みんなで幸せになろうよ。 Expressionを手に入れよう! 幸いなことに、“Creature House版”の旧い『Expression』は、Microsoft社の英語版公式サイトから無料で入手できます。Windows版もMac版もあるので安心してください。 Creature House Expression Download page (English)http //www.microsoft.com/expression/expression-design/Download.aspx なおダウンロードには、Windows Live IDかMSNのID(MSNメッセンジャーやWindow Live Messenger)でログインし、いくつかの情報を登録する必要があります。 ダウンロードしたファイルを実行すると、インストールが始まります。英語表示が嫌だと言う人は、こちらのアーカイブから「Expression3アップデータ」をダウンロードし、解凍して、同梱されている localizeJ.txt を『Expression』のインストールフォルダへ移動させましょう。 マニュアル(e3.pdf)とチュートリアル(e3tutorial.pdf)も英語ですが、日本語版はこちらのアーカイブの「体験版」をダウンロードすれば入手できるようです。ただし現状ではダウンロードできませんので、雑誌や書籍などに収録された体験版を運良く入手するか、分けてくれる親切な人に頼むかしてください(ちなみに私は不親切です。どうしてもと言う方は、気まぐれで親切になるときを辛抱強く待ってください)。 Mac版は以上の手順で動作するようです(Mac未所持なので未確認)。 Windows版は残念ながら、このままでは日本語環境では動作しません(英語環境なら動作するらしいです)。日本語Windowsで動作させるには、以下のいずれかの方法を採る必要があります。 Microsoft AppLocale Utilityを使います。初心者にもお勧め。ただしXPでしか使えません。 Microsoft AppLocale Utilityをダウンロード、インストールします。http //www.microsoft.com/downloads/details.aspx?FamilyID=8c4e8e0d-45d1-4d9b-b7c0-8430c1ac89ab displaylang=ja 実行ファイルe3.exeのバイナリを書き換えます。パソコンが壊れたとき自力で何とかできない人にはお勧めしません。XPはもちろん、Vistaや7でも有効のようです。 バイナリエディタを用意します。http //www.vector.co.jp/vpack/filearea/win/util/bin/edit/ インストールしたフォルダの "e3.exe" をバイナリエディタで開きます。 アドレス 0036170E の箇所 "75" を "EB" に書き替えます。以上です。 以上で、『Expression』を使う準備が整ったはずです。 Expressionの解説サイトたち 2011年1月現在、『Creature House Expression』について解説されているサイトは、以下の通りです(私が確認したもののみ)。主観ですが概ね、上側が簡単な解説、下側に行くほど難しかったり専門的だったりします。 Expressionとは? - Welcone Expression User! http //expressionj.blog49.fc2.com/blog-category-1.html Expressionの部屋 - アトリエどどど http //w3.poporo.ne.jp/~dddo/oekakienv/expression/ [Expression] パソコンではじめて絵を描く本 Expression2 - イラスト描きかた調査団 http //d.hatena.ne.jp/ashakura/20090121 エクスプレッションTips - ラウンジピュア http //ryoshida.web.infoseek.co.jp/tips/tipstop.htm how to Expression3J - 紫幻回廊 http //xnyan.web.fc2.com/howto/practice.html Expressionのページ http //www.babiko.info/exp/ 海津宜則の Expression 3J Pure Tour - http //www.kaizu.com/laboratory/panda/expression/tour/ Expression3覚書 - 妄碌庵 http //homepage1.nifty.com/moroku/moh/xpr/e3_00.html アトリエ - 森川ひさしの十二階画廊 http //www.ecodacs2.nerima.tokyo.jp/~mori/cg_kouza/koza_top.htm Acrylic の夢(仮題) - Acrylic 雑記 http //www.geocities.jp/livingcels/acrylic/ Expressionの基本操作 「Expressionの基本操作」は、こちらをご覧ください。
https://w.atwiki.jp/lodungeon/pages/16.html
https //www.cave.co.jp/contact/
https://w.atwiki.jp/rsbuygoldq/pages/71.html
Without having considerable time to invest harvesting, it may be difficult to pay for every item you would like within maplestory accounts. Not really everybody may invest plenty of time to find the greatest products, plus some individuals simply do not have enjoyable harvesting all night at any given time, even though they ve time to do this a href="http //www.buymaplestory.com/" strong maplestory mesos for sale /strong /a . Luckily, a few lot associated with locations where one can purchase maplestory mesos on the internet. However how could you inform those would be the greatest? This particular manual ought to enable you to figure out the very best locations to purchase Mesos on the internet, through displaying a person exactly what to consider inside a great Mesos vendor. The very first thing you need to take a look at for just about any website which offers walnut tale mesos is actually their own status. A website having a great status will not possess a lot of issues with customer support or even additional difficulties waiting around to occur. However how could you examine the website s status without having performing lots of looking as well as requesting lots of queries upon discussion boards? Nicely, 1 technique is actually to check out websites becoming promoted upon additional well-liked Walnut Tale websites. These types of websites is going to be cautious in order to just promote websites along with great reputations, so that they do not help to make on their own appear poor. One more thing you need to take a look at is actually set up website is actually cautious regarding your own privateness. The very best websites can make is nearly not possible for anybody to discover you purchased any kind of a href="http //www.buymaplestory.com/" strong cheapest maplestory items /strong /a using a couple of methods as well as utilizing wise techniques to move all of them. Looking at this particular away could be a little bit hard, although a few websites perform point out whether or not they make use of any kind of methods ahead of time. The main thing to check out when you are attempting to purchase Mesos on the internet may be the website s costs.
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