最近、かなりリダイレクト使うサービスを作っていて、 たまたまchromeでチェックをして気がついた。 もう少し具体的にどういう事かというと、 "HTTP/1.1 301 Moved Permanently"などのヘッダーを付けて、 リダイレクトさせると、chromeの場合、 そのリダイレクト先をキャッシュし、 2度目以降、同じURLへのアクセスは、 リダイレクト先のURLへ直接飛んでいきます。 普通のユーザーであれば、全く問題ないのですが、 開発者でリダイレクターでカウンターや解析用のcookieを発行を考えている場合、 正常に機能しなくなってしまうので注意が必要です。 解決方法は、簡単で、 "Pragma: no-cache"などのキャッシュさせないような ヘッダー情報も付けるだけです。 ちなみに、"Pragma: no-cache"は、HTTP/1.0用で、 HTTP/1.1ではCac
HTTPプロトコルでは、コンピュータ同士が通信している間に、コードを用いてお互いの状態(ステータス)をやり取りしています。このコードのことをHTTPステータス・コード(HTTP Status Code)と呼び、エラーが発生した場合に「404 Not Found」のようにブラウザ上に表示されたり、エラーが発生しなかった場合にも見えないところでやり取りされています。 また、通信を行うためにクライアントがサーバーに様々なリクエストを行いますが、このリクエストの方法をメソッドと呼びます。 規格
完全に個人用のメモです。(え?Nagiosなんて使ってないでZabbix使え?いやZabbixも使ってます…) check_httpでページ上の文字列もチェックする単なるhttp監視だと、アプリケーションがエラー画面を出していても200で応答していたら正常とみなされてしまうので(アプリケーションエラーでステータスコード200を返すのは相当ださいけど…)画面上に表示される文字列も照合するようにした方が良い。 nagiosなら以下のようにする。 /etc/nagios/objects/commands.cfgに以下を追加 define command{ command_name check_http_string command_line $USER1$/check_http -H $HOSTADDRESS$ -u $ARG1$ -s $ARG2$ } そして、サービスの定義で define
WebサイトのHTML情報を取得する際にcurlを使用することがあります。 curlとはWebブラウザのコマンドライン版のようなもので、与えられた コマンドを元にページ情報を取得する機能です。 curlを使用すれば、ログインフォームにPOSTでデータを渡してログイン 処理を行い、ログイン後のページ情報を取得するようなことも可能です。 ですが、ログイン処理を行った後、ログイン後にしか行けないような別の ページの情報を取得しようとすると、セッションが引き継げずHTMLが取得 できない場合があります。 今回はそのような場合に対処する方法をお教えします。 まずは、curlを使用してログイン処理を行い、ログイン後のページを 表示するスクリプトです。 ここではPHPプロ!にログインする処理を記述しています。 <?php $params = array( "login-name" => "name",
独自ドメインが使えるホスティングサービスは、どのように実現しているのだろうか? その鍵となるのが「バーチャルホスト」である。この機能を使うことによって、1台のマシンで複数のWebサイトを運用できるようになる。 バーチャルホストとは 今回は、Apacheの特徴的な機能の1つである「バーチャルホスト」について解説する。この機能により、少ないリソースで複数のWebサイトを構築することが可能になる。 なぜバーチャルホストが必要なのか 通常、Webサーバへのアクセスにはwww.atmarkit.co.jpやwww.tis.co.jpといったURLが利用される。URLの「atmarkit.co.jp」や「tis.co.jp」の部分はドメイン名、「www」の部分はホスト名と呼ばれる。第2回でも説明したとおり、実際にはURLをIPアドレスに置き換えなくてはWebサーバにアクセスできない。そこで、先方ドメイ
(Last Updated On: 2018年8月4日)テキストインターフェース処理の基本でもう書いてしまいましたが、今回はHTTPヘッダーインジェクションの解説です。 HTTPヘッダーインジェクションとは? HTTPヘッダーインジェクションはHTTPリクエストヘッダーとHTTPレスポンスヘッダーの二種類に分けて考えます。 1. 特定のHTTPリクエストヘッダーに攻撃用文字列を挿入 攻撃者は様々なHTTPリクエストヘッダーに任意の文字列を挿入して攻撃が可能です。PHPでは$_SERVER変数に保存されます。 HTTP_HOST HTTP_USER_AGENT HTTP_ACCEPT HTTP_ACCEPT_LANGUAGE HTTP_ACCEPT_ENCODING HTTP_REFERER HTTP_CONNECTION HTTP_* (その他、全て) 最初のHTTP_HOSTはホストヘッ
出典:http://ja.wikipedia.org/wiki/User_Datagram_Protocol UDPのデータはヘッダー長フィールドの値によって変わります。ヘッダー部分は固定長のデータです。 バイナリインターフェースの利点は効率が良い事です。例えば、ポート番号がテキストの数値ならテキストからバイナリ値への変換が必要になります。元々バイナリなら変換は必要ありません。(実際にはエンディアンの違いから変換が必要になる場合があります)データサイズも小さくなります。 現在ではテキストインターフェースの多くが可変長のインターフェースを持っています。可変長インターフェースを持つテキストインターフェースは、テキスト情報に意味を持たせるため特定の形式や特別な意味を持つ文字が定義されています。 ここでは「可変長」の「テキストインターフェース」を解説します。 HTTPプロトコル HTTPプロトコル
リクエスト投げるときに以下のように「Accept-Encoding:gzip,deflate」ヘッダつけてあげればだいたいOK(サーバ側が対応してればの話だけど)。 wget http://mgng.aws.af.cm/ --header="Accept-Encoding:gzip,deflate" -O mgng.html.gz curl -H "Accept-Encoding:gzip,deflate" http://mgng.aws.af.cm/ > mgng.html.gz これでgzip圧縮されたコンテンツが取得できるから転送量抑えられる。試しに通常のやつとgzip圧縮したやつのサイズを比較してみる。 まず通常のやつ。2525byte。 $ curl http://mgng.aws.af.cm/ > mgng.html % Total % Received % Xferd Ave
Ruby 上で http を叩いた通信見たい時に、毎回同じ事をやってるので抽象化して http-dump というライブラリを作った。 https://github.com/hotchpotch/http-dump $ gem install http-dump require 'net/http' require 'uri' require 'http-dump' HTTPDump.dump { Net::HTTP.get(URI('http://example.com')) } と http でやりとりしてるコードを block で囲むと、以下のように出力される。 > GET http://example.com/ with headers {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く