• 締切済み

URLで何文字送れます?

URLのあとに変数をつけて文字列など送ることが出来ますが 何文字までURLにのせておくることが出来るのでしょうか? 普通に試した場合かなりな量送れたのですが、正確な送信可能文字数などあれば知っておきたいと思っています。 またOKWEBなどの入力フォームもやはりURLでエンコードして送っているのでしょうか?

noname#20806
noname#20806
  • PHP
  • 回答数6
  • ありがとう数8

みんなの回答

  • taseki
  • ベストアンサー率66% (155/233)
回答No.6

> 文字数に制限なく送ることは出来ませんか? POSTメソッドを使えば制限なく送れます。 ただ、これはブラウザ側が送れるという話ですが、どんな場合でも受け取る側で何らかの制限はすべきです。

  • SV576
  • ベストアンサー率28% (2/7)
回答No.5

NN6では3000文字以上でも大丈夫みたいです。

noname#20806
質問者

補足

ありがとうございます。 ではフォームでテキスト入力したデータを「URLの一部」として送る場合は文字数を考えた方が良いですね。 文字数に制限なく送ることは出来ませんか?

  • taseki
  • ベストアンサー率66% (155/233)
回答No.4

ちなみに、HTML4の仕様では65536みたいですね。 http://www.w3.org/TR/html4/sgml/sgmldecl.html MozillaやFirefox、OperaなどはIEよりも最大文字数は多いらしいですが、正確なところはわかりません。 蛇足ですが、他の方もおっしゃっているように、今回は「送ることができる」文字数のご質問でしたが、「受け取ることができる」文字数はまた別なので、御注意。 掲示板などに不正なアンカーを書き込んで、他の閲覧者に別サイトにデータ送信させるというのもありますし、サーバー側、スクリプト側でも現実的な文字数制限など、対策しておくべきでしょう。

noname#20806
質問者

お礼

ありがとうございます。 ではフォームでテキスト入力したデータを「URLの一部」として送る場合は文字数を考えた方が良いですね。 文字数に制限なく送ることは出来ませんか?

回答No.3

>ブラウザなどによって違うと思いますが、とりあえずIEでは最大2,083文字とのことです。 こんな長さのURLをまじめに受け取っていたら、Webサーバがダウンしたり、ログファイルがすぐに パンクしてしまいます。 実際、長いURLをWEBサーバに大量に送りつける攻撃方法があります。 Apacheなど定番のWEBサーバでは、受け付けるURLの長さを制限している事が多いです。 (たとえば256文字以下とか)

noname#20806
質問者

補足

ありがとうございます。 ではフォームでテキスト入力したデータを「URLの一部」として送る場合は文字数を考えた方が良いですね。 文字数に制限なく送ることは出来ませんか?

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

> 上記bbbの部分が何文字まで送信可能か知りたかったのです。 それは少し難しいですね…。 GETは、あくまでもパラメーターを「URLの一部」として送ります。そしてURL全体のサイズが決まっています。 したがって、パラメータの部分はURLの最大長から実際の「URI」の長さを引いた長さで、さらに「bbb以外の部分」の長さを引いたのが、bbbの部分の最大長です。

noname#20806
質問者

補足

ありがとうございます。 ではフォームでテキスト入力したデータを「URLの一部」として送る場合は文字数を考えた方が良いですね。 文字数に制限なく送ることは出来ませんか?

  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

ブラウザなどによって違うと思いますが、とりあえずIEでは最大2,083文字とのことです。 http://support.microsoft.com/kb/208427/JA/ POSTには制限はありません(仕様上は)。 > またOKWEBなどの入力フォームもやはりURLでエンコードして送っているのでしょうか? <form~>タグにenctypeを指定しなければ、ブラウザが送るデータはすべてURLエンコードされます。GETでもPOSTでも。 ちなみに、URLエンコードというのは、URLの末尾に?aaa=bbb&ccc=ddd~など付けて送る方法(GET)のことではないです。念のため。

noname#20806
質問者

補足

URLエンコードは文字列を記号や英数字に変換することですね。上手く質問が出来ていませんでした。 ?aaa=bbb おっしゃる通り上記bbbの部分が何文字まで送信可能か知りたかったのです。

関連するQ&A

  • フォーム送信とURLエンコードについて

    CGI&PHP初心者です。 フォームのデータ送信とURLエンコードについて、お尋ねします。 method="GET" のフォームで、検索フォームをつくりたいとおもっています。 日本語も含めた検索語をフォーム送信したいと考えていますが、 送信の結果、エンコードされずにそのままブラウザのURL欄に入力した日本語が表示されてしまいます。 (ただ、メモ帳などにURLをコピーペーストするとURLエンコードがされているようです。) googleでは検索結果のアドレス欄にURLエンコードされた文字列がでているが、 同じように検索結果のアドレス欄にはURLエンコードされた文字列をだしたい。 URLに日本語をださずにURLエンコードさせた文字列を表示させるには、 どうすればいいのでしょうか? 補足:できるかぎり検索処理が重くならないにしたいと思います。     開発環境PHP&MySQL     動作環境Chrome のバージョン 38.0

    • ベストアンサー
    • CGI
  • 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
  • URLエンコードされなかったパラメータを受け取る方

    Apacheのアクセスログに、URLエンコードされていない変数が正しく書き込まれているのですが、 PHPでがURLエンコードされていない変数が受け取れませんでした。 URLエンコードされずに送信されたデータはPHPでは受け取れないのでしょうか?

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

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

  • 携帯電話の絵文字とURLエンコード/デコードについて

    携帯電話の絵文字とURLエンコード/デコードについて Java・シェルスクリプトによるCGIとPHPを用いた 携帯電話向けのウェブアプリを開発しています。 アプリの内容としては、PHP側で生成したHTMLのフォームから ユーザーに入力してもらった文字列を引数としてJava側に渡し、 Java側で値を受け取ってから、文字列変換処理を行うものです。 この際の、携帯電話特有の絵文字の取り扱いについてつまずいています。 PHPとPHPとの間の場合は、フォームから送られるパラメータが 絵文字を含んでいたとしても、特に何の問題なく絵文字パラメータの 入力・送信(<input type="text" name="hoge" value="EMOJI">)・ 受信・表示(echo $_REQUEST['hoge']; で EMOJI を表示する)ができていたのですが、 フォームから送られるURLエンコードされたクエリー文字列を Java側で引数として受け取り、もとの文字列に戻すためにURLデコードの処理をかけると、 携帯電話で入力した絵文字の部分だけ文字化けしてしまいます。 (現在確認の取れているのは、ドコモの絵文字とauの絵文字が「 ? 」 (半角のクエスチョンマーク)に化けてしまう事態です) PHPどうしの間でフォームによってPOSTやGETで送受信される際も 入力された値がいったんURLエンコードされてから HTTPリクエストに乗ることは間違いないと思うので、 Java側のURLデコーダーの問題かと思われるのですが (たとえば、未知の範囲のバイナリはすべて例外として ? にしてしまう、など)、 どなたか解決策等をご存じないでしょうか。 ちなみに現状、絵文字以外の通常の文字列に関しては目立った問題はなく 受信、変換処理、表示等ができている段階なので、 最後の最後に絵文字の問題だけが残ってしまい、困っています。 よろしければ、ご教唆のほど、よろしくお願い申し上げます。 参考までに、開発環境は以下の通りです。 ・Windows XP SP3 + Eclipse Build id: 20100218-1602(ローカル開発環境) ・Cent OS 5.3(アプリ実行用VPSサーバー) ・Sun JDK SE: 1.6.0_20 (開発用Windowsマシン・アプリ実行用サーバともに同じバージョン) ・使用言語および文字コード  Java、PHP、日本語、Shift_JIS(携帯電話のうち、ドコモがShift_JISを標準とするため) ・URLデコーダーに使っているパッケージ・クラス  org.apache.commons.codec.net.URLCodec の decode()メソッド (Shift_JISの場合、java.net.URLDecoder は java.net.URLEncoderでエンコードしたものしか正常にデコードできないため) (参考: http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25659&forum=12 ) ( http://commons.apache.org/codec/download_codec.cgi )

    • ベストアンサー
    • Java
  • セルに入力されている文字列をUTF-8形式にURLエンコードする方法

    Excelでセルに入力されている文字列をUTF-8形式にURLエンコードする方法を探しています。 下記のURLでShift-JISにURLエンコードできるものは提供されているのですが、 UTF-8に変換できるものは見つかりませんでした。 。 http://www.vector.co.jp/soft/winnt/net/se369699.html どうぞよろしくお願いいたします。

  • S-JISの2バイト文字をURLエンコードするには

    VBでSJISの2バイト文字をURLエンコードをしたいのですが、適切にエンコードできません。 エンコード規則は「%上位バイトの16進数%下位バイトの16進数」では足りないのでしょうか? 例えば、「指」という文字を巷のエンコードサイトにかけると「%8Ew」という結果になりますが、 Public Sub test() Dim strTmp As String strTmp = Format(Hex(Asc("指")), "0000") MsgBox ("%" & Left(strTmp, 2) & "%" & Right(strTmp, 2)) End Sub だと「%80%00」になってしまいます。 「%00」は文字列終端コードだそうですが、どんな処理をかけたらよいのでしょうか? 解決法・調べ方等、何でも結構ですので、 ご教授下さいますようよろしくお願いします!

  • 変数内の文字列を指定した数のみ表示。

    こんばんわ。 PHPで変数の中にこんな文字列があったとします。 $a="最近Okwebのサイトのデザインにもだいぶ慣れてこっちのほうがよいのでは。と思うようになってきました。" 普通に表示させるならこれだけと思うんですが、 echo $a 任意の文字数を表示させる関数が思い出せないし検索しても引っかからないです。 アドバイスいただけるとありがたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ブラウザのURLエディットボックスには、何文字までいれても大丈夫?

    ブラウザのURLを入力するところには、何文字までいれても大丈夫なのでしょうか? CGIを作ろうと考えているのですが、引数が長くなりそうです。 あまり長い文字列を入力したりしたら、ブラウザが落ちてしまうのではないかと心配です。 自分でもIEで実験してみたのですが、けっこうな文字数が入るのですが、限界がわかりません。どの程度まで大丈夫なのでしょう? ネットスケープ、IE、どちらでもけっこうですので、分かる方、是非とも情報を下さい。

  • URLの文字列をエンコードして表示させたい。

    IISでウェブサーバを立てて日本語のフォルダを参照できるようにしているのですがURLの文字列をコピーしてメールに貼り付けた時にリンクさせたい為、URLの日本語の文字列の部分をエンコードさせたいのですが何か良い方法はありませんか?

専門家に質問してみよう