• ベストアンサー

コンテンツ長って何ですか??

SetContentlengthメソッドがきちんと動作するかの実験を行っているのですが、 setしてgetすればいいのかと思っていたところ、うまくいきませんでした。 (getしたところー1とでました) 簡単に考えていたのですが、そもそも”コンテンツ長”事態がなんなのかわかっていません。 googleで調べてみたんですが、setContentLengthを調べても”コンテンツ長を設定します”と書いてあるだけで、詳しくわかりませんでした。コンテンツ長で調べたところ、同じページばかりが引っかかり、やはりわかりませんでした。 本も同じようなもので、意味が分からなくて困っています。 唯一あるページに「コンテンツ長を設定することでサーバーからクライアントの接続を制限できます」と書いてあったのがもっとも詳しかったのですが、 それ以上の説明はなく、よけいに混乱してしまいました。 1.コンテンツ長って何ですか? 2.コンテンツ長をsetしてgetしたいのですが、どのようにプログラムしたらよいでしょうか。

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

setContentLengthはHTTPのContent-Lengthヘッダの値を指定するためのものです。 コンテンツ長は送られてくるコンテンツのバイト長(ヘッダを除く)を表したものです。 HTMLなどをリクエストするとHTMLファイルのサイズがセットされたりします。 >どうやって確認すればよいのでしょうか?? ブラウザとサーブレットのやりとりを、パケットキャプチャを利用して生のデータを見るか、またはTelnet等で直接HTTPリクエストを送るなりして確認すればいいです。

azicyan
質問者

お礼

よくわからないので もう少し勉強してみます。 ありがとうございました

その他の回答 (1)

回答No.1

どのクラスのsetContentLengthメソッドであるか記述されていませんが、ServletResponseのものであると仮定すると、これはHTTPのレスポンスとして返す内容の長さになります。 そもそもリクエストのgetContentLengthとは似て非なるものです。 リクエストの場合には、メッセージボディなどに含まれる内容の長さになります。

azicyan
質問者

補足

仰るとおり、ServletResposeです。 では、SetContentLengthでセットしたものを どうやって確認すればよいのでしょうか??

関連するQ&A

  • HTTP コンテンツの要求

    UNIX環境上でC言語を用いてプログラミングしているのですが、完全に詰まってしまいました。 実現したい動作は、クライアントがサーバーにURLを送ってコンテンツを要求するという至って単純なものです。 現在実装が済んでいるのは、クライアントとサーバーがソケット通信をして、例えば以下のような文字列をクライアントからサーバーに送信できるようになりました。(ホスト名は適当) GET /index.html HTTP/1.1 Host: www.host.jp: 8080 調べたところ、サーバーにこの要求を渡せば対応するコンテンツが返ってくる、らしきことが書いてあったのですが、クライアントもサーバーも同じコンピュータ内にあり、ソケットでクライアントとサーバーを接続しただけで全く関係のない場所にあるコンテンツを取得できるとは到底思えません。 一体どうすればコンテンツを取得できるのか、全くわかりません。初歩的な質問かと思いますが、分かる方教えてください。

  • file_get_contents()エラー

    mysqlで構築したデータベースに画像を格納しようとしています。 ローカル環境では問題無く動作していたのですが、お名前.comのレンタルサーバーでやってみるとエラーがどうしてもでます。 レンタルサーバーの種類は【共用サーバーSD】です。 DB接続の部分のDB名、ユーザー名、パスワード等はきちんと変更しました。 【エラーの内容】 Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in /********/*****/****/****touroku.php on line 24 調べてみると、レンタルサーバーではfile_get_contents()が使えない場合があり、設定を変更剃る必要があるという記事を目にしたのですがつまづいています。 file_get_contents()を使えるようにするにはどうしらいいでしょうか。 @を前に付けてエラーをでなくするということもできるとは思うのですが、できれば@を使わずに対処できればと考えています。 今回のようなケースについては、ローカルできちんと動作していたということは、レンタルサーバー側での設定の問題なのかなと考えているのですが、いかがでしょうか。 対処法、アドバイスをいただけないでしょうか。よろしくお願いします。

    • ベストアンサー
    • PHP
  • コンテンツ アドバイザのダイアログ

    初めまして。私は2児の父親です。 子供が不適切なページをみないよう、インターネットオプションのコンテンツアドバイザで見られるページを制限するよう設定しているところです。それ自体は実際にうまく働いているのですが 「コンテンツ アドバイザによりこのサイトを表示できません。」 というダイアログがでてしまい悩んでいます。 というのは、"コンテンツ アドバイザ"でネット検索をすると、パスワードの外し方が簡単にわかってしまうからです。できれば、コンテンツアドバイザで規制をかけているということがわからないようにしたいのですが、 何か良い知恵は無いものでしょうか。 よろしくお願いいたします。

  • IEのコンテンツアドバイザについて

    IEが”コンテンツの情報が不足しています・・・”と言うメッセージを出し、動作はしていますがどのページも見れない。 そうなるまでの経緯ですが、 ①IE3だったが、ある日突然ページが見れなくなった。恐らく勝手にPCをいじられ、コンテンツアドバイザのスーパーバイザパスワードを設定されしまった。 ②設定が残っても駄目だと思い、IE3を消してIE5をインストールしたが、やはり同じメッセを出しページが見れない。 ③消しても設定が残っているならレジストリだと思い”password”で検索してみたが、それらしいのがなかった。 コンテンツアドバイザを無効にするをクリックしても、やはり駄目。 結局今もページを見る事ができずです。どなたか解決の方法を知っておられないでしょうか?宜しくお願いします。

  • file_get_contentsなどでrefererを設定する方法。

    phpでの質問です。 file_get_contentsなどでファイルを取得できますが、それにreferer(リンク元)を設定したいのです。 どうしたら良いのでしょうか。教えて下さい。 HTTP_clientなどのpearは使えない環境にあります。

    • 締切済み
    • PHP
  • アマゾンAPI(AWS)の利用制限について

    アマゾンAPI(AWS)の利用制限について アマゾンAPIの利用制限で、「IPアドレスごとに毎秒1コールを超えないアクセス」があるのですが、 http://developer.amazonwebservices.com/connect/thread.jspa?messageID=41215 レンタルサーバーに設置したPHPプログラム内の file_get_contents からAPIを参照した場合、参照元としてカウントされるのは設置したレンタルサーバーのIPなのでしょうか? それとも、ページを参照したユーザーのIPアドレスなのでしょうか? 自前で $_SERVER['REMOTE_ADDR'] を使用して、APIの動作を擬似的に真似て調べてみたのですが、 file_get_contents された側の $_SERVER['REMOTE_ADDR'] には、 file_get_contents したレンタルサーバーのIPが入っていました。 レンタルサーバーのIPがカウントされる場合、同時に複数人がページを見ていた場合にアウトですので、スタック等を各自実装する。という感じなのでしょうか? 宜しくご指導をお願い申し上げます。

    • ベストアンサー
    • PHP
  • マスターページからコンテンツページのメソッドを実行したい

    お世話になります。 マスターページからコンテンツページのメソッドを実行したいです。 よろしくおねがいします。 ********************************** マスタページ:Site1 ********************************** [Site1.Master] <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="Site1" %> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> [Site1.Master.cs] public partial class Site1 : System.Web.UI.MasterPage { ここで、コンテンツページのメソッドを実行 } ********************************** コンテンツページ:WebForm1 ********************************** [WebForm1.aspx] <%@ Page Language="C#" MasterPageFile="Site1.Master" Codebehind="WebForm1.aspx.cs" Inherits="WebForm1" %> <asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1"> </asp:Content> [WebForm1.aspx.cs] public partial class WebForm1 : System.Web.UI.Page {  protected void Page_Load(object sender, EventArgs e)  {  }  //このメソッドをマスターページで実行したい  public string メソッド()  {   return "XXXXXXX";  } }

  • WindowsアプリにPOSTのパラメータを渡す

    WebフォームからPOSTメソッドで送信したパラメータを、.NETのスマートクライアントに引き渡す方法を考えています。 ノータッチデプロイメントのスマートクライアントはどうやらクエリストリングを受け取ることはできるようですがPOSTが受け取れません。 現在試しているのはいったん、クエリストリングをASP.NETで受け取り、クエリストリングに変換してスマートクラインアントのページに転送するやりかたです。 この転送をサーバ内で処理しようとする(つまりServer.Transferを用いる)とブラウザはダウンロードされるのが.exeだとは気づかすテキストとして扱ってしまいます。Response.Ridirectを用いるとうまくいくのですが、これは結局クライアントがGETメソッドを投げてしまうので、できれば避けたい状況です。 なにかいい方法はないでしょうか?

  • file_get_contentsについて

    file_get_contentsについて教えてください。 現在あるサイトを定期的にチェックし、特定の文字列が存在したら メールを送るというものを作っています。 そのサイトチェックの際にfile_get_contentsを使って、 サイトの中身をチェックしています。 $tmpPage = file_get_contents('~.cgi?aa=bbb'); 上記の用に記述して$tmpPage内の文字列をチェックすることで 実現できているのですが、本来このサイトは携帯向けのページのため ヘッダー情報を付加して下記のように記述しています。 $opts = array( 'http'=>array( 'method'=>'GET', 'header'=>'Host :www.XXXXX.jp' . PHP_EOL . 'User-Agent :KDDI-XXXXXXXXXXXX' . PHP_EOL . 'x-up-subno :XXXXXXXXXXXX.ezweb.ne.jp' ) ); $context = stream_context_create( $opts ); $tmpPage = file_get_contents( '~.cgi?aa=bbb', false, $context ); このように記述すると Warning: file_get_contents('~.cgi?aa=bbb') [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found とエラーが返ってきてしまいます。 アクセスするURLをYahooやGoogleにすると問題なく動いているので、 問題なのはチェックするサイトのURLが「XXX.cgi?aa=bbb」と なっているのがダメなのではないかと思っています。 アクセス先のURLが単純な「.html」ではないまたは、ヘッダー情報を 付加する場合、file_get_contentsの使い方が変わるのでしょうか。 ご存知の方がいらっしゃれば是非教えてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • sambaとWindowsXPのマルチアカウント

     現在、サーバーはVineLinux2.6r4、samba2.0.1、(最新apt-get済)クライアントはWindowsXP Pro(SP2)で順調に動作しております。  このたび新しくWindowsXP Pro(SP2)をクライアントに追加しようと思っております。  このクライアントは複数のユーザーで使用するためアカウントを「管理者(adminアカウント)」「山田(制限付きアカウント)」「鈴木(制限付きアカウント)」の様に分けております。  このそれぞれのアカウント毎にsambaの各「home」ディレクトリと共有の「public」ディレクトリにアクセス出来るよう設定したいのですが、どのように設定したらよいでしょうか。  現状では設定したグループ「workgroup」内のsambaサーバー内の「public」ディレクトリのみが見ることが出来る状況です。よろしくお願いいたします。

専門家に質問してみよう