Mac OS10.5においてクッキーが正常に書き込まれない問題の解決方法

このQ&Aのポイント
  • Mac OS10.5のみでクッキーが正常に書き込まれない問題が発生しています。
  • 問題はCGIに書かれた一部のコードが原因で、削除すると問題が解消されます。
  • Mac OS10.5でも正常にクッキーを書き込む方法は現時点では分かりませんが、削除することで一時的な対処が可能です。
回答を見る
  • ベストアンサー

クッキーを書かせようとするとMac OS10.5のみHtmlソースが表示されるのです

あるフリーのCGIを改造して使っていたのですが、最近、Macを使っている人からだけ、「フォームが表示されずにHtmlのソース表示になってしまう」と言われるようになってしまいました。 私はOS10.4のMacユーザーですがそのような問題は何もなく、「ソース表示になってしまう」と言われ始めたのが丁度OS10.5が普及してきた頃だったので、自分のOSも10.5にしてみたところ、やはり指摘通りの現象が発生しました。 ちなみに、ブラウザはSafariでもFireFoxでも同じように問題が発生します。 もちろん、いずれのブラウザもクッキーは受け入れる設定にしています。 そして、色々原因を探してみたところ、CGIに書き加えた    ・    ・    ・ $joutai="既読"; print "Set-Cookie: "; print "shoko=$joutai; "; という部分から print "Set-Cookie: "; print "shoko=$joutai; "; を削除するとMacOS10.5でもソース表示に化けてしまわなくなりました。 Windows XP、Vista、MacOS 9.2、MacOS 10.3、MacOS 10.4では上記の記述のままでも正しくクッキーが書き込まれ、画面はソース表示になってしまう問題も起きないことは確認済です。 どこが悪いのでしょう? MacOS10.5でもこの問題が起きないようにクッキーを書き込ませる方法は何か無いでしょうか?

  • chack
  • お礼率100% (283/283)
  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

"Content-type: text/html;"の出力が、print "Set-Cookie: ";の後ろになっ ていませんか?もし、そうであれば、"Content-type: text/html;"を前に持っ てきてみて下さい。

chack
質問者

お礼

早々のご回答をどうもありがとうございました。 よく見直してみた結果、原因はご指摘の通りでした! おかげさまで助かりました。 どうもありがとうございました!!

関連するQ&A

  • クッキーのタイミング

    PHPのクッキーは、ブラウザにContent-type:のようなものが届く前にクッキー命令が届く必要がありましたが、Perlではそういった決まりはないのですか? <body> が出力される前に print "Set-Cookie: ~"; すると、bodyのbgcolorがむこうになったりしますよね? print "Set-Cookie: ~";によってbodyが出力済みと解釈されるためだと思います。 できればPHPのように <HTML>を出力する以前に print "Set-Cookie: ~"; したいのですが、よい方法はありませんか?

  • Cookieが保存できない。

    CGIをつかってクッキーを保存しようと試みています。 以下のように記述しておりますがなぜかクッキーファイルが生成されません。 print "Content-type: text/html\n"; print "Set-Cookie: NAME=test\n"; print "\n"; print "テスト"; 何か問題がるのでしょうか?もちろんブラウザ上ではクッキーは有効にしていますし、ほかの他クッキーファイルは存在します。 ブラウザはIE6.0です どなたかご教授お願いします。

    • ベストアンサー
    • CGI
  • gooでやたらクッキーを食わされます。ソースのどこに記述されてます?

    ブラウザで「cookieを受け付ける前に警告を表示する」に設定してから、gooのトップページ http://www.goo.ne.jp を開くと、やたらに回警告が出ます。 とくに、ad.goo.ne.jpドメインから送られているので、 広告関連なのだと思いますが、ソースを見ても、 具体的にどこで食わされているのか分りません。 cookie を送信するにはどこかで Set-Cookie : 云々 といった内容をこちら側に送りつけているはずなのだと思いますが。。。 具体的にソースのどこでクッキーが送信されているのか お分かりの方がいたらお教えいただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • セットしたクッキーを別のドメインで有効にするには

    cgi(perl)を使用してクッキーをセットし、別のドメインに飛んでいくスクリプトを作っています。 例えば、cgiはwww.a.comにあり、クッキーをセットした後、www.b.comに飛びます。 www.b.comで、セットしたクッキーが有効になるようにしようと思ってます。 このような記述で試してみましたが、http://www.b.com/test/ でクッキーが有効になっていません。 書き方が間違っているのでしょうか? print "Set-Cookie: VALUE=hogehoge; path=/test/; domain=www.b.com\n"; print "Location:http://www.b.co.jp/test/\n\n"; ちなみに、クッキーが有効になっているかどうかの判断は、Bookmarkletの「クッキーを表示」を使用して確認しています。 http://bookmarklet.daa.jp/ 宜しくお願いします。

    • ベストアンサー
    • CGI
  • クッキーの基礎的なことについて

    print "Content-type: text/html\n\n"; #クッキーがないときの動作。 #クッキーがない場合クッキーを期限1日で発行する。 if(!$ENV{'HTTP_COOKIE'}){ #クッキーが存在する場合の動作 print "クッキーないない<br>\n"; #1時間先のグリニッジ標準時を取得し、weeksとmonthsを定義 ($gmSec, $gmMin, $gmHour, $gmMDay, $gmMon, $gmYear, $gmWDay, $gmYDay, $gmIsDst) = gmtime(time + (3600 * 24)); $gmYear += 1900; @weeks = ('Sun', 'Mon', 'Tue', 'Web', 'Thu', 'Fri', 'Sat'); @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); #クッキーの有効期限をその日の1日後までにする $limitTime = sprintf("%s\n, %02d-%s-%04d %02d:%02d:%02d GMT",$weeks[$gmWDay], $gmMDay, $months[$gmMon], $gmYear, $gmHour, $gmMin, $gmSec); #クッキー発行 print "Set-Cookie: myBool=1; expires=$limitTime\n"; print "\n"; } else { #クッキーがあった場合の動作。クッキーありと表示するだけ。 print "クッキーあり。"; } クッキーの発行を見ると print "Set-Cookie: なんたらかんたら"; らしいのですが、printでこう書くだけでクッキーが発行できたことになるのですか? 実行しても、ただ単に例えば Set-Cookie: myBool=1; expires=Mon , 08-Aug-2005 12:11:43 GMT というようになるだけです。 初心者でまだ1度もクッキー作成成功してないのですが何がいけないのでしょうか。

    • ベストアンサー
    • Perl
  • MacOS 10.5だとショッピングカートが動かずソースになってしまいます

    http://www.ashiyase.info/artikel/alles.html ↑このサイトでMacで買い物をしたのですが、MacOS 10.4.11 Tiger + Safari 3.2.1だと通常に品物がカートに入って送付先も支払い方法も指定して買い物が完了するのに、MacOS 10.5.2 Leopard + Safari だと、異常な結果になってしまいます。 最初にページ上部の「カート内を見る」をクリックした時はちゃんとカートに入れるものの、商品を選んで「カートに入れる」をクリックするとカートに入れず、カートのプログラムらしきもののソースがテキスト表示されてしまい、買い物が出来ないのです。 そして、おかしいなと思って「カート内を見る」をクリックしても、もうソース表示にしかならなくて、カートに入れなくなってしまっていました。 こういうカートって、たいがい、クッキーを使っているわけですよね? 一回はカートに入れたのに、2度目からは入れないということは、カートが発行したクッキーをブラウザが拒否しているか何かなのかなとも思うのですが、そうだとして、例えばセキュリティー関係とか何か設定をいじればいいのかなと思ったのですがよくわかりません。 OSが10.5になったら何か意識して設定を変更しないとこういうことになるとかいう、考えられる原因はないでしょうか? ショップにも問い合わせたのですが、いまのところ解決していません。 お心当たりのある方がいらっしゃいましたら、OS10.5でもカートが使えるようにする対策を教えて頂けないでしょうか?

  • NN4だけクッキーが入らない

    ログインのCGIを作っているのですが、Set-Cookieヘッダにdomainの指定をすると、NN4ではクッキーが入らないのです。 出力しているヘッダは次のような感じです。 Set-Cookie: A=1; expires=Thu, 01-Jan-2004 00:00:00 GMT; domain=.hoge.jp; path=/ 他のブラウザではうまく行くことを確認しています。 またNN4でも、domainの指定さえなければうまく行きます。 思い当たる要因というと、 ・開発環境がローカルサーバ(192.~) ・ログインページがサブドメインなし(http://hoge.jp/~) くらいです。(関係ないかもしれませんが、一応) 解決方法などありましたら、よろしくお願い致します。

    • 締切済み
    • CGI
  • Macでホームページ作成。しかしWindowsで表示されない。。。

    すいません、緊急で教えて頂きたいことがございます。 ただ今、mac上でホームページを作成しました。mac標準ブラウザの safariではちゃんと問題なく表示されています。 しかし、windowsで作成したホームページを閲覧してみようとする と、全く何も表示されません。真っ白の画面のままです。。。 その真っ白の画面上で右クリックしソースを表示するとちゃんと自分の 作成したソースが表示されるのですが、とにかくwidows上では ホームページにアクセスしても何も表示されません。 この場合、何かソースに問題があるとしか思えないのですが、どこを 修正したら良いのか分かりません。 考えられる問題点を思いつく方がいましたら教えて頂けないでしょうか。 宜しくお願い致します。

    • 締切済み
    • Mac
  • cookieを保存したあとのりダイレクトができません

    CGI利用についての質問ですが、 print "Set-Cookie:~" でcookieに情報を保存したあと、 print "Location: http://url\n\n"; として リダイレクトさせようとしてもできず、 ブラウザではダウンロードのアラートが出てきてしまいます。 cookieを保存したあとのリダイレクトはどのようにすればよいでしょうか?

    • ベストアンサー
    • Perl
  • クッキー発行がFirefoxだとできるのにIEだとできない

    たびたびすみません。以下ソース。 #現在時から何秒足すか、又は引くか。 $AddOrDeduct = 3600 * 24; print "Content-type: text/html\n"; #クッキーがないときの動作。 #クッキーがない場合クッキーを期限1日で発行する。 if(!$ENV{'HTTP_COOKIE'}){ #クッキーが存在する場合の動作 #1日先のグリニッジ標準時を取得し、weeksとmonthsを定義 ($gmSec, $gmMin, $gmHour, $gmMDay, $gmMon, $gmYear, $gmWDay, $gmYDay, $gmIsDst) = gmtime(time + $AddOrDeduct); $gmYear += 1900; @weeks = ('Sun', 'Mon', 'Tue', 'Web', 'Thu', 'Fri', 'Sat'); @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); #クッキーの有効期限をその日の1日後までにする $limitTime = sprintf("%s\n, %02d-%s-%04d %02d:%02d:%02d GMT", $weeks[$gmWDay], $gmMDay, $months[$gmMon], $gmYear, $gmHour, $gmMin, $gmSec); #クッキー発行 print "Set-Cookie: myBool=1; expires=$limitTime\n"; print "\n"; print "クッキーないない($limitTime)\n"; } else { #クッキーがあった場合の動作。クッキーありと表示するだけ。 print "\n"; print "クッキーあり。"; } 問題はタイトルのように、Firefoxだとちゃんと2度目以降は「クッキーあり。」と表示されるのですが、IEだとずっと「クッキーないない(ry」のままなんです。 まだクッキーに関しての知識があまりないので解決法が分からなく、質問させてもらいました。 よろしくおねがいします。

    • ベストアンサー
    • Perl