客先サイトのCGIが以下のエラーが出て使用できないといわれました。
■エラーメッセージ
cgi-lib.pl: Unknown Content-type: application/x-www-form-urlencoded; charset=shift_jis
色々と調べていくうちにauの最新機種では
エラーがでるとの解説があったので試してみましたが
同機種が無い為確認できていません。(現在ユーザー様の回答待ちです)
しかし、どうも腑に落ちないことがありまして投稿しました。
エラーが出て動作が出来ないといわれた機種が「W54S」
エラー発生時に他のauの機種でも同様の現象が起きているかを
確認したかったのでアクセスログを確認してアクセスされている機種を
調べたところ同じ時期に発売されたであろう機種「W55T」があり
こちらでは問題が発生していないようでした。
機種によって仕様が変わったりするのでしょうか?
また、同じような現象にあって確実な修正方法を
ご存知の方はいらっしゃいますか?
・Perl 5.8.0
・cgi-lib.pl 2.18 ←81行目を修正しています
No.1ベストアンサー
- 回答日時:
0. 情報が抜け落ちています 81行目にあなたがどんな改変を行ったかがわからない。
0a.
携帯のブラウザは百花繚乱、機種で判断してはいけません。
リリースした時期によって実装が違うようです。
1. それでもごり押ししてcgi-pl2.18 1999/02/23(!)(以下.pl) を読んでみました。
考えられる点。
W54SAのブラウザがPOSTデータを吐くときに
POST hogehoge(何かの文字列。この件に関係ない)
Host: foobarhoge (何かの文字列。この件に関係ない)
Content-type: application/x-www-form-urlencoded; charset=shift_jis
とサーバーに返しているようです(憶測)
すると
$type と $ENV{'CONTENT_TYPE'} には
application/x-www-form-urlencoded; charset=shift_jis
が入ります。
本来 「;charset=shift_jis」というのは.plでは望まれていない余計な情報であるため、(82行目の$type eq 'application/x-www-form-urlencoded'を見てください。*この余計な情報がついているとここを通り抜けてしまう)
奇形情報として 80行目から始まるifを通り抜け
117行目の
elsif ($ENV{'CONTENT_TYPE'} =~ m#^multipart/form-data#) にもマッチせず
280行目の
&CgiDie("cgi-lib.pl: Unknown Content-type: $ENV{'CONTENT_TYPE'}\n"); でエラーを吐きます。
これがあなたの見ているエラーです。
2a. 望ましい改善策。
CGI.pm がサーバーの条件や、仕事の条件で使えるのであれば
こちらを利用する。(98年に製作された物を使うのは危険すぎる。)
圧倒的に最新であり改善されている可能性があります。
2b. 望ましくない改善策。
付け焼刃ですが、
82行目の
$type eq 'application/x-www-form-urlencoded'
を
$type =~ m{application/x-www-form-urlencoded}
に変えると尻尾にごみがついていてもとりあえずエラー処理しなくなるはずです。
3. まことに勝手なお願いですが、30分ほど費やした私のために。
もしこれがあなたのお役に立てて給料がたくさんクライアントから頂けたら
お礼ポイントは結構ですので
どんな募金でもOKですのでコンビ二にでも立ち寄られた際に 50円くらい 募金箱に入れていただけ無いでしょうか。
では御健勝をお祈りして。
貴重なお時間を割いていただきありがとうございました。
古いソースを使っているので確かに新しいものには
ついていけないかも知れませんね。。。
CGI.pmを利用することにします
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) auのAndroid端末のSIMカードがロックされてしまいました。 6 2022/08/22 20:31
- Windows 10 ノートPCの「アップデートナビ」画面について 1 2023/07/04 21:27
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- 格安スマホ・SIMフリースマホ Xiaomi 12Tでau回線のVOLTEが解放できません 7 2022/10/28 17:42
- au(KDDI) auの端末代未払について質問です。 現在の状況として、auで機種代の分割が残った状態で、docomo 1 2023/04/15 10:16
- au(KDDI) docomo版SIMロック解除済みスマホについて 5 2023/04/02 14:47
- au(KDDI) auデータ移行の有料化について… 先日、auショップにてスマホ機種変更の見積もりを取りました。 他に 6 2022/04/28 14:09
- 格安スマホ・SIMフリースマホ auからPOVO2への乗り換え 1 2022/04/05 11:08
- au(KDDI) iPhone 14 Pro(Appleストアにて購入) し、【AppleCare+ 盗難・紛失プラン 2 2023/04/29 14:33
- au(KDDI) 機種変更について。 今現在、auのスマホを使っているのですが、ヤフーモバイル?ってのが安くて番号を変 2 2023/01/19 19:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい。
-
POSTで送信するとエラーになる
-
Unityでアニメーションできない
-
python2系での書き方
-
windows7のperlでaccdb接続でエ...
-
WebClientの文字列送信にてエラー
-
VBSがコンパイルエラーになりま...
-
UWCSのBUSYWAIT(IE)
-
VBでグローバル変数を宣言するには
-
VBAで別モジュールへの変数の受...
-
例外処理のフローチャートの記...
-
VBAで「メモリが不足しています」
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAでリンク切れをチェッ...
-
標準モジュールを削除したい。(...
-
Access VBA標準モジュールにつ...
-
Perl モジュールのアンインスト...
-
Excel VBA 『Call』で呼び出す...
-
オフコン(富士通Kシリーズ)...
-
DBD::mysql インストールについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSがコンパイルエラーになりま...
-
perlをバージョンアップしたら...
-
教えて下さい。
-
SWI-Prologでのエラーに関して
-
【python】requestsでdataとし...
-
erf(x)とerfc(x)のカタカナ読み...
-
w3cの検証エラー?
-
Excelマクロでセルに値が入力さ...
-
powershellで引数受け取り時に...
-
CGIの接続エラー
-
windows7のperlでaccdb接続でエ...
-
POSTで送信するとエラーになる
-
SMTP-AUTH でメール送信
-
VBからブラウザの表示状態(リ...
-
メールアドレスについて
-
perl ver5.24.0 x68版で、requi...
-
ショッピングカートのカスタマイズ
-
英字のみを検索する正規表現に...
-
au「W54S」だけcgi-lib.plで不...
-
Pythonプログラミングでエラー
おすすめ情報