• 締切済み

method=GETの最大文字数

<a href="***.cgi?key=value">という具合に、 データをGETで渡したいのですが、 valueに日本語をurlエンコードしたものを使いたいのです。 そのため、かなり文字数が多くなる場合もあるので、 GETでの最大文字数をご存知の方、よろしくお願いします。

  • CGI
  • 回答数3
  • ありがとう数6

みんなの回答

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.3

RFCにはURIについての長さの規定はありませんし、 HTTPのRFCに至ってはURIの長さ制限がないことを明記していますから(参考URLの3.2.1を参照)、 少なくともプロトコルの上では長さに制限はありません。 なので、madmanさんのおっしゃるようにサーバ依存、ということになります。

参考URL:
http://www.ietf.org/rfc/rfc2616.txt
harisun
質問者

お礼

サーバ依存なのですか。 ありがとうございました。

  • madman
  • ベストアンサー率24% (612/2465)
回答No.2

利用しているサーバの種類環境に依存します。 確かapacheを使っている場合、最大長は8000 バイト程度です。 文字数が長くなることがわかっている場合は、通常POSTを使うべきです。 こんな漢字で、POSTに出来ると思いますよ。 <FORM ACTION="***.cgi" METHOD="GET" NAME="F1"> <INPUT TYPE="hidden" NAME="key" VALUE="value"> </FORM> <A HREF="." onclick="window.F1.submit();">クリック</A>

harisun
質問者

お礼

そういう方法もあるのですか。 どうもありがとうございました。

  • sinx
  • ベストアンサー率29% (14/47)
回答No.1

記憶があいまいなので自身なしです。 URLに使える最大長が256文字(半角)だった気がするのですが、 GETで渡したときにhttp://から最後までの文字数が256文字までだったと思います。 # 本当に記憶があいまいです。

harisun
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • URLエンコード  文字数について

    URLエンコード  文字数について <a href="mailto:info@example.com?subject=%96%e2%82%a2%8d%87%82%ed%82%b9">メールはこちらへ</a> などHTMLの記述で文字化けを防ぐために下記文字列のように %96%e2%82%a2%8d%87%82%ed%82%b9 日本語をエンコードしていますが、ある一定以上の文字数を入力すると、そのリンクをクリックしてもメールソフトが起動しません。 文字数の制限があるのでしょうか? 詳しい方いらっしゃいましたら教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • METHOD=GETでパラメータを渡す時に日本語が文字化けする。

    以下のようにMETHOD=GETでCGIスクリプトにパラメータを渡してQUERY_STRINGから読み出す場合、$a_wordが日本語だと文字化けして正しく送れません。 http://~/~/wwwperl.cgi?mode=tophtml&page=$next_line&a_word=$a_word http://~/~/wwwperl.cgi?mode=tophtml&page=10&a_word=テレビ朝日 $a_wordの「テレビ朝日」が「テ・E喞・」となってしまう。 フォームで送ればちゃんと表示されるのですが、ここはどうしてもMETHOD=GETで渡したいのです。 どなたか理由または解決方法を教えていただけると嬉しいのですが・・・ スクリプトはEUCで書いています。Jcode.pmを使用。 エンコード部分はこんな感じです。 sub decode { my $buf; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } foreach ( split(/&/, $buf) ) { my ($key, $val) = split(/=/); $key =~ tr/+/ /; $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; Jcode::convert(\$val, 'euc'); $FORM{$key} .= "\0" if (defined($FORM{$key})); $FORM{$key} .= $val; } $mode = $FORM{'mode'}; $page = $FORM{'page'}; $a_word = $FORM{'a_word'}; }

    • ベストアンサー
    • Perl
  • 日本語をGETで渡す場合URLエンコードは必要?

    下記の例のように全角文字をaタグのGETメソッドでPHPに渡し、その全角文字で検索した 結果を表示するスクリプトを製作中なのですが、 日本語内に空白等もないですし、あらかじめ検索する語が決まっているので ブラウザはIE9とFIREFOX9.0.1で試しましたが両方とも文字化けすることなくOKでした。 このスクリプトを万人向けに公開する場合、URLエンコード必要なのでしょうか? 例: <a href="http://hoge.php?word=日本語">日本語</a>

    • ベストアンサー
    • PHP
  • Ajax・jQueryでGET時にIEで文字化け

    Ajax・jQueryで日本語をGETするとき、IEで文字化けします。 (Firefox,chromeでは文字化けは起こりません。IE6/7/8で確認すると文字化けします) どのようにしたら文字化けが起こらなくなるか教えていただければと思います。 環境 PHP:5.1.6 サーバー・HTMLの文字コードはUTF-8 下記のようなリンクを作り、「jquery.url.js」でパラメータを取得しています。 <a href="./test.php?keyword=テスト&cate=1"> (実際には下記のソースに示しますが、テストの文字はurlencordしています。) 【javascript部分】 <script type="text/javascript" src="jquery.url.js"></script> <script type="text/javascript"> $().ready ( function() { $('#sample-get').find('a').click ( function() { var url = $.url ( $(this).attr('href') ); $.ajax ({ type: 'GET', url: 'send.php', cache: false, data: url.attr ( 'query' ), success: function ( data, dataType ) { $('#test').html ( data ); }, error: function ( XMLHttpRequest, textStatus, errorThrown ) { this; alert('Error : ' + errorThrown); } }); return false; }); 【HTML(PHP)部分】 $keyword='テスト'; $keyword=urlencord($keyword);//urlエンコード echo<<<EOF <div id="sample-get"> <a href="./test.php?keyword=$keyword&cate=1"><img src="images/sample1.png" alt="sample1" height="200" width="200"></a> </div> EOF; 【PHP部分(send.php)】 <?php echo $_GET['keyword']; echo urldecord($_GET['keyword']); echo $_GET['cate']; ?>

    • ベストアンサー
    • AJAX
  • PHPのGETとPOSTの処理を学習中なのですが、valueに日本語が

    PHPのGETとPOSTの処理を学習中なのですが、valueに日本語が入力されていた場合の処理について分からない点があります。 POSTやGETから送信された日本語の値がどの時点で再び日本語に変換されているのかということです。 たとえば以下のようなphpファイルにブラウザからアクセスした場合、 <?php $static = $_GET["static"]; print $static; ?> <form method="GET"> <textarea name="static"> 静的 </textarea> <input type="submit" name="submit_button" value=" 送 信 " /> </form> ブラウザのアドレスバーには"?static=静的%0D%0A&submit_button=+送+信+"という文字列が表示されています。 この"%0D%0"というのは、URLエンコードされた文字列らしいのですが、上記のphpファイル上の"print $static;"部分の表示ではしっかりと日本語として表示されています。 私は上記のソース上のどこの部分でURLエンコードされた文字列が再び日本語として表示されるよう変換されているか分かりません。 何卒ご教授頂けますようお願い致します。

    • ベストアンサー
    • PHP
  • 文字連結中の三項演算子について

    $buffer = ""; foreach($data as $key => $value){ $class = $value[0]['class']; $classbool = !empty($class); $buffer .= ',,'.$key.' 数: '.$value[0]['length'].' クラス: '; $buffer .= $classbool ? $class.',,<a href="' : 'なし,,<a href="'; この後$bufferに連結でURLなどが続く~~~~~~~~~~~~~~ 前後は省略していますがこういう式があります。コンマ文字は出力する際に改行に使っていますので気にしないでください。 この$bufferに連結代入している最後の二行部分を三項演算子を使って $buffer .= ',,'.$key.' 数: '.$value[0]['length'].' クラス: '. $cachebool ? $class.',,<a href="' : 'なし,,<a href="'; こう1行でやるとエラーは出ませんが結果がおかしくなります。 上記の二行に分けたものなら結果はちゃんと 数: 5 クラス: なし <a href="http://~~~ や、 数: 23 クラス: test <a href="http://~~~ と出力されますが、1行バージョンだと「~<a href="」までが抜け落ちていきなり http://~と出力されます。 最後の一行にした $buffer .= ~ の部分が全くなかったことにされているような感じです。 どうしてこうなるんでしょうか? また、一行にした場合と二行に分けた場合どっちが速いんでしょうか? どなたかご教授宜しく願います。

    • ベストアンサー
    • PHP
  • URLエンコードされたデータを戻すには

    POSTでCGIに渡す文字列はURLエンコードされていて、元に戻すにはデコードが必要ですが、もともとURLエンコードされたデータをデコードしたデータにできないでしょうか。 普通は、 読める文字→URLエンコード→CGIによる処理→URLデコード→読める文字 ですが、 もとのデータがURLエンコードされた状態だと、 URLエンコードされた文字→URLエンコード→CGIによるURLデコード→URLエンコードされた文字 となってしまいます。 たとえば、「%82%a0%82%a0%82%a0」というデータ形式から、「あああ」というデータを得たいのです。

  • CGI:method="post"でもGETになる

    CGIで標準入力によりフォームデータを取得できないため、環境変数%ENV内の値を 調べましたところ、入力フォーム(html)のformタグでmethod="POST"と明示しているにも 拘らず、REQUEST_METHODの値がGETになっており、POST用のCONTENT_LENGTHも GET用のQUERY_STRINGも共に空になっております。 htmlでmethod="GET"と指定した場合には、REQUEST_METHODの値は正しくGETになり QUERY_STRINGからフォームデータを取得できます。 同じCGIをPC上のApache2.4でテストした結果、REQUEST_METHODはhtmlのmethod=~で 指定した通り正しくPOSTまたはGETとなり、それぞれフォームデータを 取得できることを確認いたしております。 この点についてプロバイダに問合せいたしましたが、サポート対象外ということで、 回答を得ることができませんでした。 このような現象の原因について、お心当たりのある方がおられましたら、 ご教示いただけないでしょうか、お伺いいたします。 (1)ホスト動作環境 a.CGIサーバ:Apache b. perl 5.10系 (2)PC動作環境 a.OS: Windows 7 b.ブラウザ: Internet Eexplorer 11 c.CGIサーバ: Apache 2.4 d. Activeperl 5.20

    • 締切済み
    • CGI
  • file_get_contents()にて文字化け

    PHPにてfile_get_contents()関数を使用し、ソースを読み込んだのですが、文字化けしてしまいます。 ※読込先は海外サイトです。日本語は利用されていません。 エンコードの問題かと思い、試行錯誤しましたが、うまくいきません。 解決方法を教えてください。 ちなみに、ソースの読み込み事態はできているので、ユーゼエージェントで、はじかれていることはないと思います。 [相手サイトの情報] ・UTF-8を宣言している ・日本語は使用していない ※URLを$urlとします。 [ソース] header("Content-type:text/html;charset=UTF-8"); echo mb_convert_encoding(file_get_contents($url),'UTF-8','auto'); file_get_contents($url)単体でもアウトでした。 お願いしますm(_ _)m

    • 締切済み
    • PHP
  • UTF-8でのFORM GETについて

    現在UTF-8のPHPでサイトを作ってます。 FORMのGETでエンコードされた日本語データを扱いたいのですがUTF-8だとそのまま日本語がパラメーターについてしまい解決出来ません。 SJISではGETでエンコードされます。 これはこう言う仕様なのでしょうか? 実現させたい事は・・・ ページはUTF-8のエンコードのまま、FORMの日本語をUTF-8エンコードに変換して受け取りたい お願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう