クレイジーな形。 Response オブジェクトの説明 Delicious Responses html

27.01.2021

Web サイトからデータを取得する必要があるとします。その量の多さから手動での収集は非現実的または不可能です。 この場合、以下で説明するツールを使用してプロセスを自動化できます。

リクエストライブラリ

サーバーにリクエストを送信し、応答を処理するための Python ライブラリ。 解析スクリプトの基礎と主な武器。 このライブラリを使用して、ページのコンテンツを HTML 形式で受け取り、さらに解析します。

インポートリクエスト レスポンス = リクエスト 。 get ("https://ya.ru" ) # get-request print (response . text ) # ページの内容を出力 payload = ( "key1" : "value1" , "key2" : "value2" ) response =requests . get ("http://httpbin.org/get" , params = payload ) # パラメーター付きのリクエスト headers = ( "user-agent" : "my-app/0.0.1" ) response =requests 。 get (url, headers = headers) # 特定の HTML ヘッダーを含むリクエスト

API

アプリケーションプログラミングインターフェース - ソフトウェアインターフェース Web アプリケーションの所有者によって他の開発者に提供されるアプリケーション。 私たちのニーズを満たす API が存在しないということは、ページのソース コードを分析してそのパーサーを作成する作業を急ぐ前に、最初に確認する必要があります。 多くの人気のあるサイトには、独自の API とその使用方法を説明するドキュメントがあります。 API はこのように使用できます。ドキュメントに従って http リクエストを作成し、リクエストを使用して応答を受け取ります。

BS4

Beautifulsoup4 は次のライブラリです。 HTMLを解析していますおよび XML ドキュメント。 HTML 内のタグのコンテンツに直接アクセスできます。

from bs4 import BeautifulSoupSoup = BeautifulSoup (raw_html , "html.parser" ) print (soup . find ( "p" , class_ = "some-class" ) . text ) # タグ "p" の内容をクラスで出力します「あるクラス」

Selenium Web ドライバー

サイト上のデータはJavaScriptを使用して動的に生成できます。 この場合、requests+bs4 を使用してこのデータを解析することはできません。 実際、bs4 は js を実行せずにページのソース コードを解析します。 js コードを実行して、ブラウザーに表示されるものと同じページを取得するには、Selenium Web ドライバーを使用できます。これは、 さまざまなブラウザ、これらのドライバーを操作するためのライブラリーが付属しています。

許可があった場合はどうすればよいですか?

session = request.Session() data = ("login_username":"login", "login_password":"password") url = "http://site.com/login.php" 応答 = session.post(url, data =データ)

リクエストが多すぎるとサイトで禁止されたらどうなるでしょうか?
  • リクエスト間の遅延を設定します。

response = request.get(url, timeout=(10, 0.01)) # 接続タイムアウト、読み取りタイムアウト (秒単位)

  • Selenium Web ドライバーを使用するか、ユーザー エージェント ヘッダーのコンテンツを渡してリクエストを形成するブラウザーのふりをします。

user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) " "Gecko/20100101 Firefox/50.0") request =requests.get(url, headers=("User-Agent":user_agent))

  • プロキシを使用します:

コントローラーからの応答の生成

コントローラーはリクエストの処理を完了した後、通常、レスポンスを生成する必要があります。 IController インターフェイスを直接実装して低レベルのコントローラーを作成する場合、クライアントへの応答の生成を含む、要求処理のあらゆる側面に責任を負わなければなりません。

たとえば、HTML 応答を送信するには、HTML データを作成して構成し、Response.Write() メソッドを使用してクライアントに送信する必要があります。 同様に、ユーザーのブラウザを別の URL にリダイレクトするには、Response.Redirect() メソッドを呼び出して、必要な URL を渡す必要があります。 両方のアプローチを以下のコードで示します。このコードは、IController インターフェイスを実装することによって以前の記事で作成した BasicController クラスの拡張を示しています。

System.Web.Mvc の使用; System.Web.Routing を使用します。 namespace ControllersAndActions.Controllers ( public class BasicController: IController ( public void Execute(RequestContext requestContext) ( stringcontroller = (string)requestContext.RouteData.Values["controller"]; string action = (string)requestContext.RouteData.Values["action "]; if (action.ToLower() == "リダイレクト") ( requestContext.HttpContext.Response.Redirect("/Derived/Index"); ) else (requestContext.HttpContext.Response.Write(string.Format("Controller : (0)、アクション メソッド: (1)"、コントローラ、アクション)); ) ) )

Controller クラスからコントローラーを継承する場合も同様の手法が適用できます。 requestContext.HttpContext.Response プロパティが Execute() メソッドで読み取られたときに返される HttpResponseBase クラスは、以下の例に示すように、Controller.Response プロパティを通じてアクセスできます。これは、同じく前に作成した DerivedController クラスを拡張します。コントローラークラスから継承:

システムの使用; System.Web を使用します。 System.Web.Mvc を使用します。 namespace ControllersAndActions.Controllers ( public class DerivedController: Controller ( public ActionResult Index() ( // ... ) public void ProduceOutput() ( if (Server.MachineName == "ProfessorWeb") Response.Redirect("/Basic/Index") ); else Response.Write("コントローラー: 派生、アクション メソッド: ProduceOutput");

ProduceOutput() メソッドは、Server.MachineName プロパティの値を使用して、クライアントに送信する応答を決定します。 (「ProfessorWeb」は私の開発マシンの名前です。)

ユーザーへの応答を生成するこのアプローチは機能しますが、いくつかの問題があります。

    コントローラー クラスには HTML または URL 構造情報が含まれている必要があるため、クラスの読み取りと保守が困難になります。

    出力に対して直接応答を生成するコントローラーは単体テストが困難です。 Response オブジェクトのモック実装を作成し、コントローラーからの出力を処理してそれが何であるかを判断できるようにする必要があります。 これは、たとえば、キーワードの HTML マークアップを解析する必要があることを意味しますが、これは長くて退屈なプロセスです。

    このように各応答の細部を処理することは複雑で、エラーが発生しやすくなります。 プログラマの中には、低レベルのコントローラを構築することによって提供される絶対制御を好む人もいますが、これは通常、すぐに複雑になってしまいます。

幸いなことに、MVC フレームワークには、これらすべての問題、つまりアクションの結果を解決する便利なツールがあります。 次のセクションでは、アクションの結果の概念について説明し、次のことを示します。 いろいろな方法でコントローラーからの応答を生成するために使用されます。

行動の結果

MVC フレームワークのアクションの結果は、インテントのステートメントとインテントの実行を区別するために使用されます (トートロジーでごめんなさい)。 この概念はコツを掴めば簡単に見えますが、間接的な部分があるため、理解するのに時間がかかります。

アクション メソッドは、Response オブジェクトを直接処理する代わりに、コントローラーからの応答の内容 (たとえば、ビューのレンダリングや別の URL またはアクション メソッドへのリダイレクト) を記述する ActionResult 派生クラス オブジェクトを返します。 ただし、(これが非常に間接的であるため) 答えは直接生成されません。 代わりに、ActionResult オブジェクトが作成され、アクション メソッドが呼び出された後に MVC フレームワークが処理して結果を生成します。

アクション結果システムは、コマンド設計パターンの一例です。 このパターンは、実行される操作を記述するオブジェクトを保存して渡すシナリオを表します。

MVC フレームワークは、アクション メソッドから ActionResult オブジェクトを受け取ると、 ExecuteResult() メソッド、このオブジェクトのクラスで定義されます。 次に、アクション結果の実装が Response オブジェクトに対して動作し、意図に一致する出力を生成します。 これを実際に実行するために、Infrastructor フォルダーを作成し、以下の例に示すカスタム ActionResult 実装を含む CustomRedirectResult.cs という名前の新しいクラス ファイルをそこに追加しましょう。

System.Web.Mvc の使用; namespace ControllersAndActions.Infrastruct ( public class CustomRedirectResult: ActionResult ( public string Url ( get; set; ) public override void ExecuteResult(ControllerContext context) ( string fullUrl = UrlHelper.GenerateContentUrl(Url, context.HttpContext); context.HttpContext.Response.Redirect (フルURL);

このクラスは、System.Web.Mvc.RedirectResult クラスの動作方法に基づいています。 利点の 1 つは オープンソース MVC フレームワークは、あらゆるものの内部動作を探索できることを目的としています。 CustomRedirectResult クラスは、同等の MVC クラスよりもはるかに単純ですが、この記事の目的には十分です。

RedirectResult クラスをインスタンス化するときに、ユーザーのリダイレクト先となる URL を渡します。 ExecuteResult() メソッドは、アクション メソッドの完了時に MVC フレームワークによって実行され、 応答オブジェクトフレームワークによって提供される ControllerContext オブジェクトを通じてリクエストを作成し、RedirectPermanent() メソッドまたは Redirect() メソッドのいずれかを呼び出します (これは、この記事の前半の例の低レベル IController 実装内で行われたことを正確に反映しています)。

CustomRedirectResult クラスの使用法を以下の例に示します。これは、Derived コントローラーに加えられた変更を示しています。

// ...ControllersAndActions.Infrastructor を使用します。 namespace ControllersAndActions.Controllers ( public class DerivedController: Controller ( public ActionResult Index() ( // ... ) public ActionResult ProduceOutput() ( if (Server.MachineName == "MyMachineName") return new CustomRedirectResult ( Url = "/Basic/インデックス" ); else ( Response.Write("コントローラー: 派生、アクション メソッド: ProduceOutput"); return null; ) ) ) )

ActionResult を返すようにアクション メソッドの結果を変更する必要があることに注意してください。 アクション メソッドの実行時に MVC フレームワークに何も実行させたくない場合は、null を返します。これは、CustomRedirectResult インスタンスが返されなかった場合に実行したことです。

単体テストのコントローラーとアクション

MVC フレームワークの多くの部分は単体テストを容易にするように設計されており、これは特にアクションとコントローラーに当てはまります。 このサポートにはいくつかの理由があります。

Web サーバーの外部でアクションとコントローラーをテストできます。 コンテキスト オブジェクトは、モック化が簡単な基本クラス (HttpRequestBase など) を通じてアクセスされます。

アクション メソッドの結果をテストするために、HTML マークアップを解析する必要はありません。 期待した結果が得られていることを確認するには、返された ActionResult オブジェクトを検査します。

クライアント要求のエミュレーションは必要ありません。 MVC フレームワークのモデル バインディング システムを使用すると、パラメーターで入力を受け取るアクション メソッドを作成できます。 アクション メソッドをテストするには、それを直接呼び出して、適切なパラメータ値を指定するだけです。

コントローラーからのデータ生成に関する今後の記事では、単体テストの作成方法を説明します。 さまざまな種類行動の結果。

単体テストは全体像の一部にすぎないことを忘れないでください。 アプリケーションの複雑な動作は、アクション メソッドが連続して呼び出されるときに発生します。 単体テストは、他のテスト手法と組み合わせると最も効果的に機能します。

リダイレクト アクションの特別な結果がどのように機能するかがわかったので、MVC フレームワークによって提供される同等のフレームワークに切り替えることができます。MVC フレームワークはより強力で、Microsoft によって徹底的にテストされています。 派生コントローラーに必要な変更を以下に示します。

// ... public ActionResult ProduceOutput() ( return new RedirectResult("/Basic/Index"); ) // ...

条件ステートメントがアクション メソッドから削除されました。つまり、アプリケーションを実行して /Derived/ProduceOutput のような URL に移動した後、ブラウザーは /Basic/Index のような URL にリダイレクトされます。 アクション メソッドのコードを簡素化するために、Controller クラスには、さまざまな種類の ActionResult オブジェクトを生成するための便利なメソッドが含まれています。 したがって、たとえば、 Redirect() メソッドの結果を返すことで、上記の例と同じ効果を実現できます。

// ... public ActionResult ProduceOutput() ( return Redirect("/Basic/Index"); ) // ...

アクション結果システムには特に複雑な点はありませんが、最終的には、読みやすく単体テストが容易な、よりシンプルでクリーンで一貫性のあるコードを生成するのに役立ちます。 たとえば、リダイレクトの場合、アクション メソッドが、Url プロパティに予期されるターゲットが含まれる RedirectResult インスタンスを返すかどうかを簡単に確認できます。

MVC フレームワークは、以下の表で説明する多くの組み込みアクション結果タイプを定義します。

組み込みの ActionResult タイプ 種類 説明 Controller クラスのヘルパー メソッド
結果の表示

指定されたビューテンプレートまたは標準のビューテンプレートをレンダリングします

ビュー()
PartialView結果

指定されたまたは標準の部分ビュー テンプレートをレンダリングします。

PartialView()
RedirectToRouteResult

アクション メソッドまたは指定されたルート エントリへの HTTP 301 または 302 リダイレクトを発行し、ルーティング設定に従って URL を生成します

RedirectToAction()
RedirectToActionPermanent()
RedirectToRoute()
RedirectToRoutePermanent()
リダイレクト結果

指定された URL への HTTP 301 または 302 リダイレクトを発行します。

リダイレクト()
RedirectPermanent()
コンテンツ結果

フォーマットされていないテキスト データをブラウザに返し、さらにコンテンツ タイプ ヘッダーを設定します

コンテンツ()
ファイル結果

バイナリ データ (ディスク上のファイルやメモリ内のバイト配列など) をブラウザに直接転送します。

ファイル()
Json結果

.NET オブジェクトを JSON にシリアル化し、応答として送信します。 このタイプの応答は、ツールを使用するときに生成されることが多くなります。 ウェブAPIとAJAX

Json()
JavaScript結果

フラグメントを送信します ソースコードブラウザで実行する必要があるJavaScript

JavaScript()
HttpUnauthorized結果

HTTP 応答ステータス コードを 401 (「未承認」を意味します) に設定します。これにより、適切な認証メカニズム (フォーム認証または Windows 認証) が訪問者にサインインを求めます。

いいえ
HttpNotFoundResult

返品 HTTPエラーコード 404 - 見つかりません (見つかりません)

HttpNotFound()
HttpStatusCodeResult

指定されたHTTPコードを返します

いいえ
空の結果

何もしません

いいえ

これらの型はすべて ActionResult クラスから派生しており、その多くには、Controller クラスに便利なヘルパー メソッドがあります。 このようなタイプの結果の使用方法については、後続の記事で説明します。

翻訳: ヴラド・メルジェヴィチ

Web フォームについては誰もが知っていますよね? タグをいくつか挿入し、ボタンですべてを完了すれば完了です。

あなたは半分も知りません。 HTML5 では、フォームで使用できる 10 を超える新しいフィールド タイプが定義されています。 そして、私が「使用する」と言うときは、特別な仕掛けやハック、回避策を必要とせずに、すぐに使用できることを意味します。 あまり心配しないでください。これらのエキサイティングな新機能がすべて実際にすべてのブラウザーでサポートされていると言っているわけではありません。 絶対にそうではありません、全員がという意味ではありません。 で 最新のブラウザはい、フォームには機能がすべて表示されます。 ただし、古いブラウザでもフォームは機能しますが、その可能性を最大限に発揮することはできません。 つまり、これらの機能はすべてのブラウザーで正常に機能低下します。 IE6でも。

プロンプトテキスト プロンプトテキストのサポート
I.E. Firefox サファリ クロム オペラ iPhone アンドロイド
- 4.0+ 4.0+ 4.0+ 11.0+ 4.0+ -

フォームに関する HTML5 の最初の改良点は、入力フィールドにプロンプ​​ト テキストを設定できることです。 このテキストは、入力フィールドが空でフォーカスがない場合に表示されます。 入力フィールドをクリックすると (またはタブで入力フィールドに移動すると)、ヒント テキストが消えます。

おそらく、プロンプト テキストを以前に見たことがあると思います。 例えば、 モジラ Firefoxヒントテキストが含まれています アドレスバー「ブックマークと日記を検索」という碑文が付いています。

アドレスバーをクリックすると、ヒントテキストが消えます。

ここでは、フォームに示唆的なテキストを含める方法を説明します。




placeholder 属性をサポートしていないブラウザは、単に無視します。 危害や違反はありません。

マークアップ教授に聞く

☞ Q. プレースホルダー属性に HTML マークアップを使用できますか? 写真を挿入したり、色を変更したりしたいです。

A. プレースホルダー属性にはテキストのみを含めることができ、HTML コードは含めることはできません。 ただし、一部のブラウザではテキスト スタイルを設定できる特別な CSS 拡張機能があります。

オートフォーカスフィールド オートフォーカスのサポート
I.E. Firefox サファリ クロム オペラ iPhone アンドロイド
- - 4.0+ 3.0+ 10.0+ - -

Web サイトでは JavaScript を使用して、 自動領収書最初のフォームフィールドにフォーカスします。 たとえば、メインページでは Google.com検索フィールドにはオートフォーカスが付いています キーワード。 これはほとんどの人にとって便利ですが、上級ユーザーや特別なニーズを持つユーザーにとっては煩わしい場合があります。 ページがスクロールするのを待っている間にスペースを押した場合、フォーカスはフォームの入力フィールドにあるため、スクロールは行われません (スクロールする代わりにフィールドにスペースが入力されます)。 ページの読み込み中にフォーカスを別の入力フィールドに移動すると、サイトのオートフォーカス スクリプトが「勝手に」フォーカスを元の入力フィールドに戻し、入力を中断して間違った場所に入力してしまう可能性があります。

オートフォーカスは JavaScript を通じて機能するため、このような極端なケースに対処するのが困難になる可能性があり、Web ページにフォーカスを「盗まれたくない」人にとっては選択肢がほとんどありません。

これらの問題を解決するために、HTML5 ではすべてのフォーム要素に autofocus 属性が導入されています。 autofocus 属性は、その名の通りの動作を行います。ページが読み込まれるとすぐに、フォーカスが指定されたフィールドに移動します。 ただし、これはスクリプトではなく単なるマークアップであるため、動作はすべてのサイトで一貫しています。 さらに、ブラウザの製造元 (または拡張機能の作成者) が、オートフォーカスを無効にする方法をユーザーに提供する場合があります。

フォームフィールドをオートフォーカスに設定する方法は次のとおりです。




autofocus 属性をサポートしていないブラウザは無視します。

どうしたの? 高級な HTML5 ブラウザだけでなく、どこでもオートフォーカスを機能させたいと思いませんか? 現在のスクリプトをオートフォーカスのままにしておくことができます。2 つの小さな変更を加えるだけです。

  • autofocus 属性を HTML コードに追加します。
  • ブラウザが autofocus 属性をサポートしているかどうかを確認し、サポートしていない場合は独自のスクリプトを実行します。

代替機能によるオートフォーカス




if (!("autofocus" in document.createElement("input")) ) (
document.getElementById("q").focus();
}


集中力を早めに設定する

多くの Web ページは、window.onload が起動してフォーカスが設定されるのを待ちます。 ただし、すべての画像が読み込まれるまで window.onload イベントは発生しません。 ページに多くの画像がある場合、このような単純なスクリプトは、ユーザーがページの別の部分との対話を開始した後にフォーカスを変更する可能性があります。 それが理由です 経験豊富なユーザーオートフォーカススクリプトが嫌いです。

たとえば、前のセクションでは、オートフォーカス スクリプトは、参照するフォーム フィールドの直後に配置されました。 これ 最適解ただし、JavaScript コードのブロックをページの中央に配置するのは感性を損なう可能性があります (または、より日常的なことを言えば、システムがそれほど柔軟ではない可能性があります)。 ページの途中にスクリプトを挿入できない場合は、 window.onload の代わりに jQuery の $(document).ready() などのカスタム イベントを介してフォーカスを設定する必要があります。

jQueryによるオートフォーカス




$(document).ready(function() (

$("#q").focus();
}
});






jQuery カスタム イベントは、DOM にアクセスできるようになるとすぐに起動します。つまり、ページ テキストが読み込まれるのを待ちますが、すべての画像が読み込まれるのは待ちません。 これは最適なアプローチではありません - ページが異常に大きい場合や、 ネットワーク接続速度が遅い場合、フォーカスされたスクリプトが実行される前にユーザーがまだページを操作している可能性があります。 ただし、window.onload イベントが発生するのを待つよりははるかに優れています。

あなたが同意し、単一ステートメントのスクリプトをページのコードに挿入することに同意する場合、これは最初のオプションよりも厄介ではなく、2 番目のオプションよりも優れた妥協策です。 jQueryカスタムイベントを使用して設定できます 自分のイベント、autofocus_readyとしましょう。 オートフォーカス フィールドが使用可能になるとすぐに、このイベントを手動でトリガーできます。 このテクニックを教えてくれた E.M. Shtenberg に感謝します。

代替カスタムイベントによるオートフォーカス




$(document).bind("autofocus_ready", function() (
if (!("autofocus" in document.createElement("input"))) (
$("#q").focus();
}
});





$(document).trigger("autofocus_ready");

この解決策は、最初のアプローチと同様に最適です。 ページ テキストの読み込み中に、技術的に可能な限り早くフォーカスがフォーム フィールドに設定されます。 アプリケーション ロジックの一部 (フォーム フィールドのフォーカス) がページの本文からセクションに移動されました。 この例は jQuery に基づいていますが、カスタム イベントの概念は jQuery に固有のものではありません。 YUI や Dojo などの他の JavaScript ライブラリも同様の機能を提供します。

要約しましょう。

  • フォーカスを正しく設定することが重要です。
  • 可能であれば、フォーカスしたいフィールドでブラウザに autofocus 属性を使用させます。
  • 古いブラウザ用の代替コードを使用している場合は、スクリプトが古いブラウザでのみ実行されるように autofocus 属性のサポートを定義します。
  • できるだけ早く焦点を合わせます。 フォーカス スクリプトをコードのフォーム フィールドの直後に挿入します。 これが気にならない場合は、カスタム イベントをサポートする JavaScript ライブラリを埋め込み、フォーム フィールドの直後のコードでイベントを発生させます。 これが不可能な場合は、jQuery の $(document).ready() などのイベントを使用します。
  • いかなる状況でも、window.onload がフォーカスを取得するのを待ってはいけません。
住所 電子メール

10 年以上にわたり、フォームには数種類のフィールドしか含まれていませんでした。 最も一般的なものは次のとおりです。

これらのフィールド タイプはすべて HTML5 でも引き続き機能します。 「HTML5 にアップグレード」する場合 (おそらく !DOCTYPE を変更することによって)、フォームに 1 つの変更も加える必要はありません。 やった、下位互換性!

ただし、HTML5 では 13 の新しいフィールド タイプが定義されており、それらを使用しない理由はありません。

新しいタイプの電子メール アドレスの最初のもの。 こんな感じです。





「type="email" をサポートしていないブラウザでは…」で始まる文章を書こうとしましたが、やめました。 なぜ? ブラウザが type="email" をサポートしていないのかどうかわからないからです。 すべてのブラウザは type="email" を「サポート」します。 特別なことは何も行わないかもしれませんが、type="email" を認識しないブラウザはそれを type="text" として扱い、通常のテキスト フィールドとして表示します。

これがいかに重要であるかを強調します。 インターネット上には、電子メール アドレスの入力を求めるフォームが何百万もあり、そのすべてで が使用されています。 テキストボックスが表示されるので、そこにメールアドレスを入力するだけです。 そして、 type="email" を定義する HTML5 が登場します。 ブラウザがおかしくなっているのでしょうか? いいえ。 地球上のすべてのブラウザは、IE6 であっても、不明な type 属性を type="text" として扱います。 そのため、今すぐ type="email" を使用してフォームを「更新」できます。

ブラウザが type="email" をサポートしているとするとどうなるでしょうか? まあ、それは何かを意味するかもしれません。 HTML5 仕様では、新しいフィールド タイプに特定のユーザー インターフェイスは必要ありません。 Opera はフォーム フィールドに小さなアイコンを追加します。 Safari や Chrome などの他の HTML5 ブラウザは、type="text" と同じテキスト フィールドとして表示されるため、ユーザーは (ソース コードを見るまで) 違いに気づきません。

そしてiPhoneです。

iPhone には物理キーボードがありません。 すべての「入力」は、Web ページのフォーム フィールドに移動したときなど、適切なタイミングでポップアップ表示されるスクリーン キーボードをクリックすることによって行われます。 Apple は iPhone のブラウザで何か賢いことをしました。 いくつかの新しい HTML5 フィールドを認識し、画面上のキーボードを動的に変更して入力を最適化します。

たとえば、メールアドレスはテキストですよね? もちろんですが、これは特殊なタイプのテキストです。 したがって、ほぼすべての電子メール アドレスには @ 記号が含まれており、 少なくとも、単一のドット (.) ですが、スペースが含まれる可能性はほとんどありません。 そのため、iPhone を使用しているときに にアクセスすると、小さなスペースバーと記号専用のキーを含むオンスクリーン キーボードが表示されます。 そして @。

要約してみましょう。 すべてのフィールドをすぐに翻訳することにマイナス面はありません。 メールアドレス type="email" で。 iPhone ユーザーを除いて、これに気づく人はほとんどいないでしょうし、iPhone ユーザーもおそらく気づかないでしょう。 しかし、それに気づいた人は静かに微笑み、仕事が少し楽になったことに感謝するでしょう。

Webアドレス

Web アドレス (URI と呼ぶ少数の衒学者を除いて、専門家の間では URL と呼ばれています) も、別の種類の特殊なテキストです。 Web アドレスの構文は、関連するインターネット標準に限定されます。 Web アドレスをフォームに入力するよう求められた場合、「125 Farwood Road」ではなく、「http://www.google.com/」のようなものを期待します。 斜線はメインでもよく見られます Googleページそのうちの3つがあります。 ドットも一般的ですが、スペースは禁止されています。 そして、すべての Web アドレスには、「.com」や「.org」などのドメイン サフィックスが付いています。

それで... (ドラムロールをお願いします)... 。 iPhoneではこんな感じです。

iPhone は電子メールの場合と同様に仮想キーボードを再設計しましたが、Web アドレスの入力用に最適化されました。 スペースは完全に 3 つに置き換えられます 仮想キー: スラッシュ、ドット、および「.com」 (「.com」キーを押したままにすると、「.org」や「.net」などの別のサフィックスを選択できます)。

HTML5 をサポートしていないブラウザは type="url" を type="text" として扱うため、Web アドレスを入力する必要があるすべてのフィールドにこの型を使用してもデメリットはありません。

カウンターとしての数字

次のステップ: 数字。 番号のリクエストは、電子メールや Web アドレスのリクエストよりも複雑です。 まず第一に、数字はあなたが思っているよりも複雑です。 番号をすばやく選択します。 -1? いいえ、1 から 10.7 1/2 までの数字のことを言いましたか? いやいや、分数じゃないよ、バカ。 π? 今、あなたは無理数を選んだだけです。

「ただの数字」を尋ねられることはあまりないことに注意してください。 特定の範囲の数値を要求される可能性が高くなります。 その範囲内の特定の種類の数値のみが必要な場合があります。整数は可能ですが、分数や分数は必要ありません。 10進数 HTML5 はすべてをカバーします。

ほぼ任意の番号を選択してください

一度に 1 つの属性を見てみましょう。

  • type="number" は、これが数値フィールドであることを意味します。
  • min="0" は、このフィールドに許可される最小値を指定します。
  • max="10" は最大許容値です。
  • step="2" と最小値の組み合わせは、0、2、4 などから最大値までの範囲の有効な数値を定義します。
  • value="6" デフォルト値。 見覚えがあるはずですが、これはフォーム フィールドの値を定義するために常に使用されるのと同じ属性です。 ここで出発点として言及しますが、HTML5 は以下に基づいています。 以前のバージョン HTML。 すでに行ったことを再度学習する必要はありません。

これは数値フィールドのコードです。 これらの属性はすべてオプションであることに注意してください。 最小値はあるが最大値がない場合、min 属性は指定できますが、max 属性は指定できません。 デフォルトのステップ値は 1 であり、別のステップ値が必要になるまでステップ属性を省略できます。 デフォルト値がない場合は、value 属性を空の文字列にすることも、完全に省略することもできます。

しかし、HTML5 はそれだけではありません。 同じ低価格の自由を得るために、これらの便利な JavaScript テクニックを手に入れることができます。

  • input.stepUp(n) はフィールド値を n ずつインクリメントします。
  • input.stepDown(n) はフィールド値を n ずつ減らします。
  • input.valueAsNumber は、現在の値を浮動小数点数として返します (input.value プロパティは常に文字列です)。

表示の問題? そうですね、数値を管理するための正しいインターフェイスは、ブラウザーでは異なる方法で実装されます。 iPhone では、入力が難しいため、ブラウザは数字入力用の仮想キーボードを再び最適化します。

Opera のデスクトップ バージョンでは、type="number" フィールドが小さな上下矢印が付いたカウンターとして表示され、クリックして値を変更できます。

Opera は min 、 max 、 step 属性を尊重するため、常に許容可能な数値が得られます。 値を最大まで増やすと、カウンターの上矢印が灰色に変わります。

この章で説明した他のすべての入力フィールドと同様、 type="number" をサポートしていないブラウザは、これを type="text" として扱います。 デフォルト値は (value 属性に格納されているため) フィールドに表示されますが、min や max などの他の属性は無視されます。 これらを自分で実装することも、カウンター管理がすでに実装されている JavaScript フレームワークを使用することもできます。 まずはこちらをご確認ください。

if (! .inputtypes.number) (
// フィールド type=number はネイティブでサポートされていません
// Dojo または別の JavaScript フレームワークを試す可能性があります
}

スライダーとしての数字

カウンタは数値入力を表す唯一の方法ではありません。 おそらく次のようなスライダーも見たことがあるでしょう。

フォーム上にスライダーも追加できるようになりました。 コードは不思議なことにカウンターフィールドに似ています。


使用可能なすべての属性は、 type="number" の場合と同じ ( min 、 max 、 step 、 value ) であり、同じことを意味します。 唯一の違いは、 ユーザーインターフェース。 ブラウザでは、入力フィールドの代わりに type="range" をスライダーとして表示することが想定されています。 執筆時点では 最新バージョン Safari、Chrome、Opera はこれで動作しました。 残念ながら、iPhone は単純なテキスト フィールドとして表示されます。数値入力用のオンスクリーン キーボードも最適化されていません。 他のすべてのブラウザはフィールドを type="text" として扱うだけなので、この型をすぐに使用し始める理由はありません。

HTML 4 には、カレンダーによる日付の選択が含まれていません。 JavaScript フレームワーク (Dojo、jQuery UI、YUI、Closure Library) を使用すると、この問題を回避できますが、当然ながら、これらの各ソリューションでは、組み込みカレンダーのフレームワークを「実装」する必要があります。

HTML5 はついに、スクリプトを使用せずにネイティブの日付ピッカーを有効にする方法を定義しました。 実際には、日付、月、週、時刻、日付 + 時刻、およびタイムゾーン付きの日付 + 時刻の 6 つがあります。

今のところ、サポートは...不足しています。

日付ピッカーのサポート Opera と入力します その他のブラウザ
type="日付" 9.0+ -
type="月" 9.0+ -
type="週" 9.0+ -
type="時間" 9.0+ -
type="日付時刻" 9.0+ -
type="日時ローカル" 9.0+ -

Opera では次のように表示されます。

日付とともに時間が必要な場合、Opera は以下もサポートしています。

1 か月と 1 年が必要な場合 (有効期限など) クレジットカード)、Opera では以下を表示できます。

あまり一般的ではありませんが、次の方法で年間の週を選択する方法もあります。

最後になりましたが、次のタイミングです。

代替機能を備えた日付ピッカー




...

var i = document.createElement("入力");
i.setAttribute("タイプ", "日付");
if (i.type == "テキスト") (
// ネイティブの日付ピッカーはサポートされていません :(
// Dojo/jQueryUI/YUI/Closure を使用して作成します。
// 次に要素を動的に置き換えます
}

おそらく他のブラウザも最終的にはこれらのタイプをサポートするようになるでしょう。 type="email" やその他のタイプと同様、これらのフォーム フィールドは、type="date" とそのバリアントを認識しないブラウザではプレーン テキストとして表示されます。 必要に応じて、 を使用して Opera ユーザーを満足させ、他のブラウザが追いつくのを待つこともできます。 これを使用するのがより現実的ですが、ブラウザーがネイティブの日付ピッカーをサポートしているかどうかを確認し、選択したスクリプト (Dojo、jQuery UI、YUI、Closure Library、またはその他のオプション) の形式で代替ソリューションを含めます。

検索ウィンドウ

それで、検索してください。 Google や Yahoo からの検索だけではありません (もちろん、それらもです)。 あらゆる Web サイトのあらゆるページ、あらゆる検索ボックスについて考えてみましょう。 Amazon にも検索ボックスがあり、Yandex にも検索ボックスがあり、ほとんどのブログにも検索ボックスがあります。 どのように作られているのでしょうか?

、Web 上の他のテキスト フィールドと同じです。 これを修正しましょう。




新しい世代を求めて

ブラウザによっては、通常のテキスト フィールドと何の違いも感じられない場合があります。 ただし、Mac OS X で Safari を使用している場合は、次のように表示されます。 違いは分かりましたか? 入力欄の角が丸くなっています! わかります、わかります、あなたは自分の感情を抑えるのが難しいです。 しかし、待ってください、まだあります! フィールドに type="search" と入力し始めると、Safari はウィンドウの右側に小さな「x」ボタンを挿入します。 「x」をクリックすると、フィールドの内容がクリアされます。 Google Chrome 内部的には同じテクノロジーを搭載しており、同じように動作します。 これらの小さなトリックはどちらも、iTunes や他のクライアントのネイティブ検索と見た目も動作も似ています。 Mac アプリケーション

OS X

Apple.com は、サイトが「コンゴウインコを愛する」雰囲気を伝えるためにサイト検索を使用しています。 ただし、ここでは Mac に特有のものは何もありません。 これは単なるコードであるため、すべてのプラットフォームのすべてのブラウザーは、プラットフォームの規則に従ってレンダリング方法を選択できます。 他のすべての新しい型と同様、 type="search" を認識しないブラウザはこれを type="text" として扱うため、今すぐすべての検索ボックスで type="search" を使用し始めない理由はまったくありません。

デフォルトでは、Safari はほとんどのスタイルを適用しません。 Safari で検索フィールドを通常のテキスト フィールドとして強制的に扱うようにしたい場合 (独自のスタイルを適用できるように)、このルールをスタイル シートに追加します。

入力(
-webkit の外観:テキストフィールド;
}

このトリックを教えてくれた John Lane に感謝します。

色の選択

HTML5 では、色を選択してそれを 16 進数で返すフィールドも定義されています。 カラーピッカーをサポートしているブラウザはありません。私はずっと Mac OS のパレットが大好きなので、これは残念です。 たぶんいつか。

注記 翻訳者 Opera 11 はこの機能をサポートしています。

フォームの検証

この章では、新しいフォーム要素やオートフォーカスなどの新機能について説明しましたが、おそらく HTML5 フォームの最も魅力的な部分である自動入力検証については触れませんでした。 フォームに電子メール アドレスを入力する際に​​よくある問題を見てみましょう。 おそらく、JavaScript を使用してクライアント側の検証を行った後、PHP、Python、または別のサーバー側の言語を使用してサーバー側の検証を行っているでしょう。 HTML5 がサーバー側の検証に取って代わることはありませんが、いつかクライアント側の検証に取って代わる可能性があります。

JavaScript での電子メール アドレス検証には 2 つの大きな問題があります。

  • 少数の訪問者 (おそらく約 10%) は JavaScript を有効にしていません。
  • 住所が間違って届いてしまいます。
  • 真剣に言うと、住所を間違えます。 ランダムな文字のセットが有効な電子メール アドレスであるかどうかを判断することは、非常に困難です。 注意深く見れば見るほど、それは難しくなります。 これはとてもとても難しいことだと言いましたか? この頭痛の種をブラウザ上でハングアップする方が簡単ではないでしょうか?

    Opera は type="email" をチェックします

    以下は Opera 11 のスクリーンショットですが、この機能は Opera 9 から存在しています。コードには、type 属性の email 値の設定が含まれています。 Opera ユーザーが を使用してフォームを送信しようとすると、スクリプトが無効になっている場合でも、ブラウザは自動的に電子メール アドレスをチェックします。

    HTML5 では、フィールドを使用して Web アドレスを検証し、 を使用して数値を検証することもできます。 数値の検証では min 属性と max 属性の値が考慮されるため、大きすぎる数値を入力するとブラウザーはフォームの送信を許可しません。

    HTML5 にはフォーム検証を有効にするコードはなく、デフォルトで行われます。 検証を無効にするには、novalidate 属性を使用します。

    私を試しないでください




    ブラウザーが HTML5 にフォーム検証のサポートを組み込むのは遅れています。 Firefox 4 は完全にサポートされます。 残念ながら、Safari と Chrome は部分的にしか実装されていません。これらはフォーム要素を検証しますが、フォーム フィールドが検証に失敗した場合に表示されるメッセージは表示しません。 つまり、 type="date" に間違った (またはスペルを間違えた) 日付を入力すると、Safari と Chrome はフォームを送信しませんが、送信しなかった理由は通知しません。 無効な値を含むフィールドにフォーカスが設定されますが、Opera や Firefox 4 のようなエラー メッセージは表示されません。

    必須フィールド サポート
    I.E. Firefox サファリ クロム オペラ iPhone アンドロイド
    - 4.0+ - - 9.0+ - -

    HTML5 でのフォーム検証は、各フィールドの型に限定されません。 一部のフィールドが必須であることを指定することもできます。そのようなフィールドには、フォームを送信する前に値が必要です。

    必須フィールドのコードは可能な限り単純です。




    ブラウザによって、必須フィールドの元の外観が変更される場合があります。 Mozilla Firefox 4.0 での例を次に示します。

    さらに、必須の値を入力せずにフォームを送信しようとすると、Firefox はフィールドが必須であり空にはできないことを示す情報バーを表示します。

    リクエスト メッセージを受信して​​解釈した後、サーバーは HTTP 応答メッセージで応答します。

    • ステータス行
    • 0 個以上のヘッダー (General|Response|Entity) フィールドとそれに続く CRLF
    • ヘッダフィールドの終わりを示す空の行(つまり、CRLF の前に何もない行)
    • オプションでメッセージ本文
    • 次のセクションでは、HTTP 応答メッセージで使用されるエンティティについてそれぞれ説明します。

      メッセージステータス行

      ステータス行は、プロトコルのバージョンと、その後に続く数値ステータス コードおよびそれに関連するテキスト フレーズで構成されます。 要素はスペース SP 文字で区切られます。

    ステータス行 = HTTP バージョン SP ステータスコード SP 理由フレーズ CRLF HTTP バージョン

    HTTP バージョン 1.1 をサポートするサーバーは、次のバージョン情報を返します。

    HTTP バージョン = HTTP/1.1

    ステータスコード

    Status-Code 要素は 3 桁の整数で、Status-Code の最初の桁は応答のクラスを定義し、最後の 2 桁は分類の役割を持ちません。 最初の桁には 5 つの値があります。

    S.N.
    1 コードと説明

    1xx: 情報

    2 これは、リクエストが受信され、プロセスが継続中であることを意味します。

    2xx: 成功

    3 これは、アクションが正常に受信、理解、受け入れられたことを意味します。

    3xx: リダイレクト

    4 これは、リクエストを完了するにはさらにアクションを実行する必要があることを意味します。

    これは、リクエストに不正な構文が含まれているか、リクエストを実行できないことを意味します。

    5 5xx: サーバーエラー

    これは、サーバーが一見有効なリクエストを実行できなかったことを意味します。

    HTTP ステータス コードは拡張可能であり、HTTP アプリケーションは登録されているすべてのステータス コードの意味を理解する必要はありません。 すべてのステータス コードのリストは、参照用に別の章に記載されています。

    応答ヘッダーフィールド

    General-header と Entity-header については、HTTP ヘッダー フィールドを学習する別の章で学習します。 ここでは、Response ヘッダー フィールドが何であるかを確認してみましょう。

    応答ヘッダー フィールドを使用すると、サーバーはステータス行に配置できない応答に関する追加情報を渡すことができます。 これらのヘッダー フィールドは、サーバーに関する情報と、Request-URI で識別されるリソースへのさらなるアクセスに関する情報を提供します。

    • プロキシ認証

    • WWW認証

    独自のカスタム Web クライアントとサーバーを作成する場合は、カスタム フィールドを導入できます。

    応答メッセージの例

    次に、すべてをまとめて、サイトで実行されている Web サーバーから hello.htm ページを取得するリクエストに対する HTTP 応答を形成しましょう。

    HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache/2.2.14 (Win32) Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT Content-Length: 88 Content-タイプ: text/html 接続: クローズ Hello, World!

    次の例は、Web サーバーが要求されたページを見つけられなかった場合に、エラー状態を表示する HTTP 応答メッセージを示しています。

    HTTP/1.1 404 Not Found Date: Sun, 18 Oct 2012 10:36:20 GMT Server: Apache/2.2.14 (Win32) Content-Length: 230 Connection: Closed Content-Type: text/html; charset=iso-8859-1 404 見つかりません 見つかりません

    要求された URL /t.html がこのサーバー上に見つかりませんでした。

    以下は、Web サーバーが指定された HTTP 要求で間違った HTTP バージョンを検出したときのエラー状態を示す HTTP 応答メッセージの例です。

    HTTP/1.1 400 Bad Request Date: Sun, 18 Oct 2012 10:36:20 GMT Server: Apache/2.2.14 (Win32) Content-Length: 230 Content-Type: text/html; charset=iso-8859-1 接続: クローズ 400 不正なリクエスト 不正なリクエスト

    ブラウザが送信したリクエストは、このサーバーが理解できませんでした。

    リクエスト行に、プロトコル文字列の後に無効な文字が含まれていました。

    説明されているオブジェクトは非常に便利で、 強力なツール。 このオブジェクトにはいくつかのメソッドがあり、その説明を以下に示します。

    コレクション: 方法: プロパティ: Response.Cookies コレクション

    Cookies コレクションは Cookie の値を設定します。 指定された Cookie が存在しない場合は、Cookie が作成されます。 Cookie が存在する場合、新しい値を受け取り、古い値は破棄されます。

    Response.Cookies(cookie) [(キー) | 。 属性] = 値

    パラメータ:

    • cookie - クッキー名
    • key - オプションのパラメータ。 これが指定されている場合、Cookie はディレクトリ (ネストされた) であり、キーは値のセットになります。
    • 属性 - Cookie 自体に関する指定された情報。 このパラメータは次のいずれかになります。
    • value - このキーまたは属性に割り当てる値を指定します。
    名前説明
    ドメイン録音のみ。 指定した場合、Cookie はこのドメインからのリクエストがあった場合にのみ送信されます。
    有効期限が切れます録音のみ。 Cookie の有効期限が切れる日付。 Cookie がクライアントに書き込まれるようにするには、この日付を設定する必要があります ハードドライブセッション終了後。 この属性が設定されていない場合、Cookie の有効期限は現在の日付であるとみなされます。 Cookie はセッションの終了後すぐに期限切れになります。
    HasKey読み取り専用。 Cookie に指定されたキーが含まれているかどうかを示します。
    パス録音のみ。 指定した場合、Cookie はこのパスからの要求に応じてのみ送信されます。 パラメータが設定されていない場合は、アプリケーションへのパスが使用されます。
    安全な録音のみ。 Cookie が保護されるかどうかを示します。

    コメント:

    次のスクリプトに示すようにキー Cookie が作成された場合、

    次に、次のヘッダーが送信されます。

    Set-Cookie:MYCOOKIE=TYPE1=シュガー&TYPE2=クッキー

    キーを使用せずに mycookie に値を割り当てると、このアクションにより type1 キーと type2 キーが破棄されます。 例えば:

    前の例では、キー type1 と type2 が破棄され、その値が失われます。 Mycookie には値のチョコレート マシュマロが含まれます。

    次の方法で特定のキーの存在を確認することもできます。

    TRUE が表示される場合はそのようなキーが存在し、FALSE が表示される場合は存在しません。

    Response.Write メソッド

    Response.Write 変数または値

    パラメータ:

    • variable_or_value - HTML 経由でブラウザ画面に表示されるデータ。 このパラメータには、VisualBasic Sc​​ripting Edition でサポートされている任意の型を使用できます。 つまり、データのタイプは、日付、文字列、文字、数値のいずれかになります。 このパラメータの値に %> の組み合わせを含めることはできません。 代わりに、同等の組み合わせ %\> を使用できます。 Web サーバーは、スクリプトの実行時にこのシーケンスを必要なシーケンスに変換します。

    次の例は、Response.write メソッドがどのように動作してクライアントにメッセージを出力するかを示しています。

    ただ言っておきます:そしてあなたの名前

    次の例では、Web ページに HTML タグを追加します。 このメソッドには %> の組み合わせを含めることはできないため、シーケンス %\> を使用します。 スクリプトの例は次のとおりです。

    出力は次の行になります。

    Response.Redirect メソッド

    Response.Redirect URL (URL - ユニフォーム リソース ロケーター)

    パラメータ:

    • URL - パラメータはユニバーサル リソース記述子です。 ブラウザをリダイレクトする必要がある場合に表示されます。

    コメント:

    あらゆる出来事 この方法タグと Web ページの間は無視されます。 このメソッドは、HTML ページの先頭でのみ使用できます。 URL パラメーターが欠落している場合、このメソッドはヘッダーをブラウザーに渡します。 このオブジェクトの次の形式で:

    HTTP/1.0 302 オブジェクトの移動場所の URL

    Response.End メソッド

    応答.終了

    コメント:

    Response.Buffer プロパティが TRUE に設定されている場合、Response.End メソッドを呼び出すとバッファがクリアされ、バッファからデータがクライアントにプッシュされます。 ユーザーにデータを出力したくない場合は、次のメソッドを呼び出す必要があります。

    Response.AddHeader メソッド

    AddHeader メソッドは、特定の値を含む HTML ヘッダーを追加します。 このメソッドは常に、クライアント ブラウザへの応答に新しいヘッダーを追加します。 このメソッドは、既存のヘッダーを新しいヘッダーに置き換えません。 追加されたヘッダーは削除できません。

    この方法は、「高度な」タスクにのみ使用されます。

    Response.AddHeader 変数名、値

    パラメータ:

    • variable_name - 新しい HTML ヘッダー パラメーターの名前。
    • value - ヘッダーに記憶される値を設定します。
    注:

    メソッドが正しく動作するには、variable_name にアンダースコア文字 (_) を含めることはできません。 ServerVariables セットは、アンダースコアをヘッダー内のダッシュとして解釈します。 例として、次のスクリプトはサーバーに MY-HEADER という HTML ヘッダーからパラメータを検索させます。

    HTTP プロトコルでは、すべてのヘッダー パラメーターが HTML ページの本文の前に渡される必要があるため、説明を開始する前にスクリプトで AddHeader メソッドを呼び出す必要があります。例外が 1 つあります。 Buffer プロパティが true に設定されている場合、AddHeader はスクリプト内のどこにでも記述できますが、Flush メソッドの最初の呼び出しの前に記述できます。 それ以外の場合、AddHeader メソッドを呼び出すとエラーがスローされます。

    次の 2 つの .ASP ファイルは、この最後の点を示しています。

    ページ上のあなたのテキスト

    この例ではページはバッファリングされません。 このスクリプトは機能しますが、サーバーがクライアントへの HTML 出力を生成する前に、AddHeader が呼び出されます。

    あなたのページからの情報です...

    2 番目の例では、ページはバッファリングされ、その結果、スクリプト自体が終了するか、Flush メソッドが検出されるまで、サーバーはクライアントにテキストを出力しません。 このメソッドを使用すると、WWW-Authenticate ヘッダーと同様に、異なる値を持つヘッダー パラメーターの複数のコピーを送信できます。

    Response.AppendToLog メソッド

    AppendToLog メソッドは、Web サーバーのレポート ファイル (ログ ファイル) の末尾に行を追加します。 このメソッドは必要に応じて何度でも呼び出すことができます。 メソッドを呼び出すたびに、指定した文字列がサーバー レポート ファイルに書き込まれます。

    Response.AppendToLog 値

    パラメータ:

    • value - Web サーバーのレポート ファイルに追加されるテキスト。 この文字列にはカンマ文字 (,) を含めることはできません。 また、追加する行の合計の長さは 80 文字を超えてはなりません。
    注:

    この機能を使用するには、IIS のこの Web サーバーの [詳細ログ プロパティ] パネルで URI クエリ オプションを有効にする必要があります。

    Response.BinaryWrite メソッド

    BinaryWrite メソッドを使用すると、文字変換を行わずに、指定した情報を現在の HTTP 出力に書き込むことができます。 このメソッドは、アプリケーションで必要なバイナリ データなどの文字列以外の情報を出力する場合に便利です。

    Response.Binaryデータの書き込み

    パラメータ:

    • data - HTTP 出力を目的としたデータ。

    バイト配列を生成するオブジェクトがある場合は、このメソッドへの次の呼び出しを使用して、その配列をクライアント マシン上で実行されているアプリケーションに渡すことができます。

    Response.Clear メソッド

    Clear メソッドは、バッファリングされたすべての HTML 出力を消去します。 ただし、この方法ではヘッダーに関連付けられたバッファー情報は消去されません。 このメソッドを使用してエラーを管理できます。 ただし、Response.Buffer プロパティが true でない場合、このメソッドを実行するとエラーが発生します。

    Response.CacheControl プロパティ

    このプロパティはデフォルト値をオーバーライドします。 プロパティをパブリックに設定すると、プロキシ サーバーは ASP によって生成された出力をキャッシュできます。

    Response.CacheControl [= キャッシュ制御ヘッダー]

    パラメータ:

    • キャッシュ制御ヘッダー - このヘッダー制御オプションはパブリックまたはプライベートのいずれかになります。
    Response.CharSet プロパティ

    CharSet プロパティを使用すると、文字コード テーブルの名前 (WINDOWS-1251 など) を HTML ヘッダー、コンテンツ タイプ行に追加できます。

    Response.CharSet コードテーブル名

    パラメータ:

    • charset_name - この HTML ページの文字セットを指定する文字列。 このコード テーブルの名前は、HTML ファイルのヘッダーの「content-type」パラメータの下に追加されます。

    Response.Charset プロパティを使用しない ASP ページの場合、ヘッダーの "content-type" パラメーターは次のようになります。

    コンテンツタイプ:テキスト/html

    ASP ファイルに次のコマンドが含まれている場合

    ヘッダーの content-type フィールドは次のようになります。

    コンテンツタイプ:テキスト/html; charset=Windows-1251

    コメント:

    この関数はヘッダーに任意の行を挿入しますが、その有効性はチェックしません。

    ページに複数の Response.Charset タグが含まれている場合、後続の各タグによって値が独自のタグに置き換えられます。

    Response.ContentType プロパティ

    ContentType プロパティを使用すると、HTML ファイルのコンテンツのタイプ (タイプ) を指定できます。 このプロパティが使用されない場合は、デフォルトで text/html が使用されます。

    Response.ContentType [=content_type]

    パラメータ:

    • content_type - HTML コンテンツ タイプを説明する文字列。 この文字列は通常、「タイプ/サブタイプ」の形式をとります。タイプはコンテンツの主要なカテゴリであり、サブタイプはコンテンツのタイプを示します。 受け取るには 完全なリストサポートされているタイプ - ブラウザのドキュメントまたは HHTP 仕様を参照してください。

    次の例は、コンテンツ タイプをチャネル定義形式 (プッシュ チャネル) に設定する方法を示しています。

    2 番目の例は、プロパティを最も一般的に知られている値に設定する方法を示しています。

    Response.Expires プロパティ

    Expires プロパティは、次の期間を指定します。 HTMLページブラウザによってキャッシュされたデータは有効期限(保存期間)が経過していないとみなされます。 ユーザーが有効期限が切れていないキャッシュされたページをブラウザから要求した場合、ブラウザはそのページをキャッシュから直接返します。

    Response.Expires [=number]

    パラメータ:

    • 数値 - ページが「期限切れ」とみなされるまでの時間 (分単位)。 この値を 0 に設定すると、 このページすぐに「期限切れ」になります。

    コメント:

    このプロパティがページ上で複数回設定されている場合は、最小値が使用されます。

    Response.ExpiresAbsolute プロパティ

    ExpiresAbsolute プロパティは、ブラウザによってキャッシュされた HTML ページの有効期限が切れたとみなされる (有効期限が切れた) 日時を指定します。 ユーザーが有効期限が切れていないキャッシュされたページをブラウザから要求した場合、ブラウザはそのページをキャッシュから直接返します。 時刻を指定した場合(日付も指定した場合)、このページの「有効期限」はその日の午前0時に有効期限が切れます。 時刻も日付も指定されていない場合は、スクリプトが実行された日時に従って値が割り当てられます。

    Response.ExpiresAbsolute [= [日付] [時刻]]

    パラメータ:

    • date - 「賞味期限」の有効期限を示します。 日付形式は RFC-1123 標準に準拠する必要があります。
    • time - ページの有効期限が切れる時刻を示します。 この値ヘッダーがクライアントに送信される前に、GMT (グリニッジ標準時) 形式に変換されます。

    コメント:

    特定のプロパティがページ上で複数回定義されている場合、「保存期間」の有効期限は、指定されたすべての値のうち最も早いものとみなされます。

    Response.IsClientConnected プロパティ

    このプロパティは読み取り専用です。つまり、このプロパティに値を割り当てることはできません。 このプロパティは、Response.Write の最後で定義されたサーバーにクライアントが接続されているか、接続されていないかを示します。

    Response.IsClientConnected()

    コメント:

    このプロパティを使用すると、ユーザーがいつサーバーに接続され、いつ切断されるかを判断できます。 たとえば、サーバーが応答してからクライアントがリクエストを送信するまでの期間の長さから、クライアントがまだ接続されており、スクリプトの実行を継続するのが合理的であるという確信が得られます。