トピック このトピックは解決済みです
TOPIC 携帯振り分け:再投稿
Posted by every
at 2010/05/19(水) 09:33
分類: 新規設置トラブル

解決したと思い込んでおりました。

エミュレータでは、各キャリアで無事閲覧・振り分けできているのですが、実際に携帯(Foma)で見ると
your your request cannot be processed
のエラーがでます。

No.439

でも同じようなエラーが出て、別データベースを作ったようですが
今ひとつピンときておりません。

ググってみると、

print "Content-length: ",length($data),"\n";

の表記が必要ということで、database.cgi内の

print "Content-type: text/plain\n\n"; を

print "Content-type: text/plain\n";

に書き換え、その下に挿入したのですが、PC版でも
画面が真っ白になってしまい、ダメでした。

このエラーの回避方法を教えて頂ければ幸いです。

編集: 2010/05/19(水) 10:33

編集: 2010/06/03(木) 15:03
トピック このトピックは解決済みです
レス表示 古い順 新しい順 | 10件のレス 1-10 表示中
RES レスメッセージ
Posted by Bear
at 2010/05/19(水) 14:46
Re:携帯振り分け:再投稿
こんにちは。

> No4070への引用返信
> 解決したと思い込んでおりました。
>
> エミュレータでは、各キャリアで無事閲覧・振り分けできているのですが、実際に携帯(Foma)で見ると
> your your request cannot be processed
> のエラーがでます。
>
> No.439
>
> でも同じようなエラーが出て、別データベースを作ったようですが
> 今ひとつピンときておりません。
>
> ググってみると、
>
> print "Content-length: ",length($data),"\n";
>
> の表記が必要ということで、database.cgi内の
>
> print "Content-type: text/plain\n\n"; を
>
> print "Content-type: text/plain\n";
>
> に書き換え、その下に挿入したのですが、PC版でも
> 画面が真っ白になってしまい、ダメでした。
>
> このエラーの回避方法を教えて頂ければ幸いです。

「length($data)」の「$data」変数はどこからきたのですか?
lengthは$dataに代入された文字列のバイト数を計算する関数です。$dataには何が代入されているのですか?

HTTPヘッダーに意図的に「Content-length」を明記するなら
print"Content-Length: 1000\n";
print"Content-Type: text/html\n\n";
のようになるかと思います。「\n」の数を間違われていませんか?

また、HTTPヘッダー情報でContent-Lengthは標準的にサーバーからレスポンスされますのであえて記述する必要はないかと思います。
CGIなど出力内容が動的になる場合、そのBody情報のバイト数を確認するためには、事前にそれ相応にCGIを設計する必要があります。ですがAmigoDatabaseはそのようには設計されていません。
実際、私のこの「ファンフォーラム」でもContent-Lengthは明記していません。

次のURLにてサーバーからのレスポンス内容を確認出来ますので確認してみては如何でしょうか。
http://www.andyhoppe.com/software/http-php-apache-iis-header.htm

「your request cannot be processed」のエラーがでるとのことですが、Content-Lengthの問題ではないのではないでしょうか?
携帯コンテンツ作成についての基礎知識は持たれていますか?
携帯キャリアや機種によって多少の前後はありますが、docomoの場合、ブラウザに転送されるHTMLの最大サイズは5KBまでを推奨しています。(最近の機種では100KBまで行けるのもあるようです。)

参考ドコモ
http://www.nttdocomo.co.jp/service/imode/make/content/browser/html/index.html

Content-Lengthの必要性は、その転送サイズをHTTPヘッダーから情報を受け取ることにより実際にHTMLが転送される前にエラーを返して処理する目安として使われます。(実際の転送が発生しなければパケット通信料がかかりません)

エラーとなるHTMLページの転送サイズが既に大きなサイズになっていませんか?

編集: 2010/05/19(水) 14:54
Posted by every
at 2010/05/20(木) 10:11
Re:携帯振り分け:再投稿
> エラーとなるHTMLページの転送サイズが既に大きなサイズになっていませんか?

おはようございます。

サイズは、もちろん5kb以下です。

> また、HTTPヘッダー情報でContent-Lengthは標準的にサーバーからレスポンスされますのであえて記述する必要はないかと思います。

とありますが、ドコモでは
----------------------------------------------------
CGI作成時に「Content-Type」、「Content-Length」は必須項目となります。
----------------------------------------------------

と下記にて掲載されておりますので、必要と思った次第です。

http://www.nttdocomo.co.jp/service/imode/make/content/browser/html/notice/basis/index.html

CGIのスキルの低い私はまだまだ勉強不足で恥ずかしいのですが、
ネット上では、同様のCGIのエラーが出ているようです。

Bear様のご指示通り、

Location内に

print"Content-Length: 1000\n";
print"Content-Type: text/html\n\n";

を設定したのですが、

画面が白くなってしまいました。

その後、results内のテンプレートやdata内のテンプレートを
更に小さいサイズにしたり、データのみの表示にしたりとしてみたのですが、結果は一緒でした。

何卒ご教授頂ければ助かります。
Posted by Bear
at 2010/05/20(木) 13:14
Re:携帯振り分け:再投稿
こんにちは。

> Location内に
> print"Content-Length: 1000\n";
> print"Content-Type: text/html\n\n";
> を設定したのですが、
> 画面が白くなってしまいました。

Locationサブルーチン内に記述していたのですね。LocationサブルーチンはURL転送を行うためのサブルーチンとなります。
AmigoDAtabaseのHTTPヘッダーはHtmlサブルーチンにて設定します。
Posted by every
at 2010/05/20(木) 13:48
Re:携帯振り分け:再投稿
> Locationサブルーチン内に記述していたのですね。LocationサブルーチンはURL転送を行うためのサブルーチンとなります。
> AmigoDAtabaseのHTTPヘッダーはHtmlサブルーチンにて設定します。

早速のご回答ありがとうございます。

############
#   Html   #
############
sub Html{ my$file=shift;
($file=~/^\//) and &Error('テンプレートの指定が不正です。');
($file=~/\.\./) and &Error('テンプレートの指定が不正です。');
print"Content-Length: 1000\n";
print"Content-Type: text/html\n\n";
require"./lib/template/$file";
print$Copyright;exit;}
上記のように、htmlサブルーチンに設定したのですが、
状況は一緒でした。

基本的な入力ミスか、設置場所のミスでしょうか?

編集: 2010/05/20(木) 13:52
Posted by Bear
at 2010/05/20(木) 15:09
Re:携帯振り分け:再投稿
こんにちは。
Content-lengthについては一旦横へ置きましょう。Content-lengthを設定したためにページが真っ白になったと思っていましたが、どうやらそのことが原因ではないようですね。

Content-lengthこのとはなしとして、もう一度詳しく状況をご説明頂けますか?
もし宜しければエラーになるURLなども明記して頂ければ状況をもっと把握できるの有難いです。
Posted by every
at 2010/05/20(木) 16:26
Re:携帯振り分け:再投稿
> No4076への引用返信
> こんにちは。
> Content-lengthについては一旦横へ置きましょう。Content-lengthを設定したためにページが真っ白になったと思っていましたが、どうやらそのことが原因ではないようですね。
>
> Content-lengthこのとはなしとして、もう一度詳しく状況をご説明頂けますか?
> もし宜しければエラーになるURLなども明記して頂ければ状況をもっと把握できるの有難いです。


すみません。
大変、お手数をお掛けしております。

まずは、エラーが出る状況ですが
エミュレータでは、各キャリア共に作動しています。

ですが、実際のFOMA環境でのみ
「接続先のサーバーは現在ご利用できません(502)
your request cannnot be processed(502)」
というエラーが表示されます。

問題のURLは、下記です。
下記携帯サイトの「お悔やみ情報検索」に進み
実際に検索を実行するとエラーが表示されます。

http://www.0983akita.com/mobile/

上記の件、何卒宜しくお願い申し上げます。
Posted by Bear
at 2010/05/21(金) 00:28
Re:携帯振り分け:再投稿
こんばんは。

> まずは、エラーが出る状況ですが
> エミュレータでは、各キャリア共に作動しています。
>
> ですが、実際のFOMA環境でのみ
> 「接続先のサーバーは現在ご利用できません(502)
> your request cannnot be processed(502)」
> というエラーが表示されます。
>
> 問題のURLは、下記です。
> 下記携帯サイトの「お悔やみ情報検索」に進み
> 実際に検索を実行するとエラーが表示されます。
>
> http://www.0983akita.com/mobile/
>
> 上記の件、何卒宜しくお願い申し上げます。

色々と拝見させて頂きました。
現状の問題は検索結果ページから携帯(FOMA)で閲覧した場合に上記エラーが表示されるということですね。同様にFOMAで確認しました。

そこでGooのモバイルサイトビューワで確認したところ

「設置サイト外からの呼び出しです。
なおセキュリティソフトやファイアウォールの影響で
本エラーとなる場合がございますので
ご利用の環境をご確認下さい。」

とのエラーが返りました。まず、エミュレータで正常に確認を行いたいと思いますので、db-setup.cgiの下記項目を修正して下さい。
# ■設置サイトの最短URL
@MyUrl=();

参考:Gooモバイルサイトビューワ
http://emu.mobile.goo.ne.jp/emu/emu.php

他に「i/search.htm」ですが、「method=post」とされていますがAmigoDatabaseでは「POST」と大文字指定になります。

今のところ確認できているには以上です。
上記設定変更等が終了しましたらまたご連絡お願いします。
続いて確認を行っていきたいと思います。

それと、当カスタマイズノートのGmap.pmをご利用頂いているのであれば著作権表示は消さないで下さい。
あと、お名前を使い分けるのもマナー的にあまり感心できません。質問数が多いからとかは気になさらないで結構ですよ。
以上、宜しくお願い致します。

編集: 2010/05/21(金) 01:02
Posted by every
at 2010/05/21(金) 13:10
Re:携帯振り分け:再投稿
bear様、色々とありがとうございます。

> # ■設置サイトの最短URL
> @MyUrl=();
変更しました。

>
> 他に「i/search.htm」ですが、「method=post」とされていますがAmigoDatabaseでは「POST」と大文字指定になります。
>
変更しました。

上記変更しましたが、現況も変わらずです。

何卒宜しくお願い申し上げます。


※著作権表記の件、大変失礼しました。
表示するようにしました。
ご教授頂いているにも関わらず、大変失礼なことをしてしまいました。
重ねてお詫び申し上げます。

編集: 2010/05/21(金) 13:12
Posted by Bear
at 2010/05/22(土) 13:04
Re:携帯振り分け:再投稿
こんにちは。
再びGooモバイルサイトビューアで確認させて頂いたところ

'D:\CustomerData\〜\db\fuho.cgi' script produced no output

のエラーがdocomoとAUの携帯キャリアで表示されました。
しかし、SoftBankでは問題なく表示されました。
確かサーバーはIISでしたよね?
もしかするとなのですが、IISサーバーでの設定に問題があるのかもしれません。
次のURLのサイトさんなどに「script produced no output」の対応策が書かれています。
http://ya-memo.blogspot.com/2010/03/iiscontent-type-texthtml-script.html
http://blog.omoide-soko.jp/2008/02/mt41iis.html
他にも色々と検索すれば出てきます。

ですが、PCではCGIを起動できているのに、一部の携帯では起動できないという関係までは探すことが出来ませんでした。ブラウザの種類で何らかの問題があるのかと思われます。
ですが、問題の方向性としては、IISサーバーの設定ではないでしょうか?

私はIISサーバーには詳しくはなく、これ以上はなんとも言えませんので、IISサーバー専門の方々のご意見等を頂いた方が宜しいかと存じます。
正直、IISサーバーでのCGI起動は問題が多々あります。元々CGIがUNIX(Linux)前提で作られていることが色々影響しているようです。

> ※著作権表記の件、大変失礼しました。
> 表示するようにしました。
> ご教授頂いているにも関わらず、大変失礼なことをしてしまいました。
> 重ねてお詫び申し上げます。

今後はご注意お願い致します。

編集: 2010/05/24(月) 01:08
Posted by every
at 2010/06/02(水) 07:50
Re:携帯振り分け:再投稿
こんばんわ。
>
> ですが、PCではCGIを起動できているのに、一部の携帯では起動できないという関係までは探すことが出来ませんでした。ブラウザの種類で何らかの問題があるのかと思われます。
> ですが、問題の方向性としては、IISサーバーの設定ではないでしょうか?
>

その後色々調査しましたが、
DOCOMOのサイトにもありましたが、FOMAでは
cgiにHTTPレスポンスヘッダに"Content-Type"と"Content-Length"が必須。とありますので、やはり原因はCGIにあると思われます。
ですが、前回のご指示の箇所に設置した場合は、CGIがうまく動作せずに画面が白くなってしまいます。
記述の仕方や設定の漏れがあるのでしょうか?

sub Html{ my$file=shift;
($file=~/^\//) and &Error('テンプレートの指定が不正です。');
($file=~/\.\./) and &Error('テンプレートの指定が不正です。');
print"Content-Length: 1000\n";
print"Content-Type: text/html\n\n";
require"./lib/template/$file";
print$Copyright;exit;}
Access: 1,219,874
 
ソーシャルブックマーク: Yahoo!ブックマーク Google Bookmarks はてなブックマーク Livedoorクリップ @niftyクリップ FC2ブックマーク Buzzurl Delicious トピックイット newsing it!