MATAタグにおけるURL指定時のパラメタ数の制限に付いて

[上に] [前に] [次に]
土屋 [E-Mail] 2000/05/15(月) 21:12:07
始めまして、何時も「とほほのwww入門」はありがたく利用させていただいてます。

METAタグを使用して任意のアドレスに自動的にジャンプしようとした時の質問なのですが、
現在、移動先のCONTENTの指定を
CONTENT="0;URL=xxxx?a=1&b=2&c=3&d=4&e=5&f=6&g=7
の様な形で行ったところ、受取側とパラメタの数があわないと言うようなエラーを起こしてしまします。

で、エラーの状態を見るかぎり「e=」と言うところまではアドレスバーに表示されているのですが
それ以降が切り落とされてしまっている様です。
最初はプログラム的ミスやNULLが入ってしまっているのかと思って調べたのですが違ったみたいです。
続いて、文字列の長さかとも考えたのですがどうやらそうでもないと言うことになりました。
そこでパラメタ数を5個にして行ってみるとエラーは起きず指定先のURLが表示されました。

と言うことはMETAタグに置けるパラメタの制限が存在するのでしょうか?
同じアドレスにA HREFタグによるリンクは大丈夫なんですよね。
それを考えるとURL部分の型の制限によるものなのでしょうか?

その辺の事をお解りになる方は是非ともお知恵をお貸し下さい。

かもめ 2000/05/15(月) 21:31:22
CONTENT="0;URL=....

の0を10くらいにしたらどうなります?

土屋 2000/05/15(月) 21:55:21
早速のお返事ありがとうございます。

>の0を10くらいにしたらどうなります?
確かにそれは気がつかなかった事ですね。

で、やってみたのですが。
結果は同じく5つめのパラメタの所で切れてしまいエラーになってしました。

2000/05/16(火) 02:31:54
&は、&と記述する必要があります。
もしかしたら、それに関連する問題があるかもしれません。
fに当たる文字列は何でしょうか?

dddd 2000/05/16(火) 09:03:59
<body onLoad="document.location='xxxx?a=1&b=2&c=3&d=4&e=5&f=6&g=7'>

とか思いついた。

土屋 2000/05/16(火) 10:54:07
>偽さん
>&は、&amp;と記述する必要があります。
確かにそのとおりですが、開発環境から&でやってました。
何分言語がPL/SQL立ったので&ampと記述するとオブジェクト作成時にいろいろ面倒だったので・・・。
で、取り敢えず今回の部分だけでもと言うことで&amp;に置き換えてみましたが結果は今までと同じでした。

>fに当たる文字列は何でしょうか?
実際のHTMLコード上では以下のようになっています。
「<META HTTP-EQUIV="Refresh" CONTENT="10;URL=eco_editer.DataView?i_Todoufuken=02000&amp;i_DataClass=3&amp;i_Nenji=S55&amp;i_Bunrui=2&amp;i_Edaban= &amp;i_Units=    &amp;i_Items=24">

fの部分は「i_Units=    」(値は半角空白4バイト)になりますね。
で、エラー時のアドレスには
http://falcon:8080/test/eco_editer.DataView?i_Todoufuken=02000&i_DataClass=3&i_Nenji=S55&i_Bunrui=2&i_Edaban=
となっています。
もしかしたら「i_Edaban= 」(値は半角空白1バイト)の値が問題になるのでしょうか?
ちなみにテストしているブラウザはIE5の5.00.2919.6307です。

>ddddさん
解答ありがとうございます。
今回は処理の構造上教えていただいた方法は使用できないようです。
ただ、こういうやり方もあるんだと一つ勉強になりました。

dddd 2000/05/16(火) 11:25:20
>fの部分は「i_Units=    」(値は半角空白4バイト)になりますね。
なんだ。
じゃあ、i_Units=%20%20%20%20 にしたら。

土屋 2000/05/16(火) 11:58:34
>ddddさん
>じゃあ、i_Units=%20%20%20%20 にしたら。
やってみました。
で、結果は成功です。ありがとうございます。

しかし、これでさらに疑問が沸いてしまうのですが、
内部的には同じ変数領域からMETAタグやA HREFタグを利用したHTML文を作成しているのですが、
同じデータを利用しA HREFタグを使いリンクした場合はアドレスバー上の半角空白は&20に変換されていました。
この変換されるされないとはMETAタグのCONTENTのCDATA属性とA HREFのURI属性の違いの聖なのでしょうか?
HTML上では共に半角空白" "で作成されているのですが、アドレスバーに表示される時に変換されないようです。

できればこの部分の仕様的内容が判ってから解決にしたいのですが、誰かお解りになる人はいますでしょうか?

2000/05/16(火) 12:29:14
まあ、WWWブラウザの使用であるといえばそれまででしょう。
とりあえず、A要素であろうとMETA要素であろうと、URL中に
半角空白を含む場合は%20とエスケープしなければなりません。
ブラウザが、勝手にエスケープしてくれることは期待しない方がいいです。
エスケープしてくれないブラウザがあってもおかしくないので。

土屋 2000/05/16(火) 13:46:34
[[解決]]
なるほど、やはりWebアプリケーションとして考えた場合、もっとも安全な状態で
HTMLを生成しておく必要があるのですね。
今後は今回勉強した事項に気をつけて行きたいと思います。

みなさんありがとうございました。

[上に] [前に] [次に]