ローカルのマシンにApacheを設定後,
テストのために簡単な javascript を含んだhtmlファイルをfirefoxから読み込もうとしたところ "Premature end of script headers" が出ました.
自身で調査しましたが,どうしても解決できません.
非常に困っております.どなたかご教授頂ければ幸いです.
【環境】
[OS] Ubuntu 10.04 LTS
[Apache] Version 2.2.14 (Ubuntu)
[Apacheの設定]
初期設定でapache2.conf から (1) httpd.conf, (2) sites-available/default等が include されます.
(2)のファイルのみ以下を変更しました:
DocumentRoot /home/hoge/www/
ScriptAlias /cgi-bin/ /home/hoge/www/cgi-bin/
<Directory "/home/hoge/www/cgi-bin/">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
また mime.types には次の記述があります.
application/javascriptjs
text/x-perl pl
【テストファイルの内容】
index.html 644
************************************************************
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Test Example</title>
<script type="text/javascript" src="/cgi-bin/test.js"></script>
<script type="text/x-perl" src="/cgi-bin/first.pl"></script>
</head>
<body>
TEST
</body>
</html>
************************************************************
/home/hoge/www/cgi-bin/first.pl 755
***************************************
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
***************************************
/home/hoge/www/cgi-bin/test.js 755
***************************************
document.write("Content-type: text/html<br><br>");
document.write("Hello World!");
***************************************
【エラーの再現手順】
Firefox 3.6.13 から
(1) http://localhost/test.html とした場合 TESTを出力しログにエラー
[error] [client 127.0.0.1] Premature end of script headers: test.js, referer: http://localhost/test.html
(2) http://localhost/cgi-bin/first.pl (出力正常)
(3) http://localhost/cgi-bin/test.js (Internal Server Error)
perl は大丈夫なのですが js がエラーになります.
No.2ベストアンサー
- 回答日時:
<Directory "/home/hoge/www/cgi-bin">
SetHandler cgi-script
</Directory>
どこかにこの項目がありませんか?
特定ディレクトリ(この場合は/home/hoge/www/cgi-bin)内の「全てのファイル」を
CGIスクリプトと見なして実行する設定です。
そのディレクトリ内のtest.jsもCGIスクリプトと見なして実行しようとしますが、
#!/usr/bin/perlなどの記述もなく、実行形式のファイルではありませんから、Internal ServerErrorになります。
SetHandlerをコメントアウトするか、削除する、(別途、拡張子.plや.cgiファイルをCGIスクリプトとして実行させる設定が必要です。)
または、
test.jsファイルをcgi-binディレクトリ以外の場所に入れて、HTMLのsrc属性もそれにあわせて変更してみて下さい。
追伸。
JavaScriptの文法や、PerlとJavaScriptの連携はまた別問題ですので、JavaScriptはJavaScriptとして勉強して下さい。
text/x-perlというtypeもありません。
この回答への補足
> 特定ディレクトリ(この場合は/home/hoge/www/cgi-bin)内の「全てのファイル」を
> CGIスクリプトと見なして実行する設定です。
>
> そのディレクトリ内のtest.jsもCGIスクリプトと見なして実行しようとしますが、
> #!/usr/bin/perlなどの記述もなく、実行形式のファイルではありませんから、Internal
> ServerErrorになります。
ご指摘ありがとうございます.
おっしゃる通り私は js ファイルを実行しようとしておりました.
ここに大きな勘違いがあったように思います.
apache 設定ファイルの中の mine.conf にて "AddHandler cgi-script .cgi .pl .js"
の記述がありましたのでこれを削除し,js を格納するディレクトリを新たに作成することによって,
正常に apache 経由で表示させることができました.
> JavaScriptの文法や、PerlとJavaScriptの連携はまた別問題ですので、JavaScriptは
> JavaScript として勉強して下さい。text/x-perlというtypeもありません。
アドバイスありがとうございます.
少しずつ勉強したいと思います.
ご回答ありがとうございました.
No.1
- 回答日時:
一般的なWebサーバーの構成で考えると、ご提示のindex.htmlをFirefoxがレンダリングした後のHTMLは、
<html>
<head>
<title>Test Example</title>
<script type="text/javascript">
Hello, World.
</script>
<script type="text/x-perl">
document.write("Content-type: text/html<br><br>");
document.write("Hello World!");
</script>
</head>
<body>
TEST
</body>
</html>
みたいなイメージになって、head部にdocument.writeしても表示に関係ないし、
firefoxで<script type="text/x-perl">のscriptが動くという話も私は、知らないし
結局表示は
TEST
のみだと思います。
Webサーバー側でjavascriptを実行させる仕組み準備してるんですか!
それにしてもサーバー側でdocument.writeは無いと思いますよ。
(サーバー側でdocumentは何をさすのやら非常に疑問です)
first.pl の方はちゃんとWebサーバー側で動作してますね。ブラウザーからの
<script type="text/x-perl" src="/cgi-bin/first.pl"></script>のGET送信
に対して、/cgi-bin/first.plが実行され、テキストの Hello, World. がレス
ポンスされ、ブラウザー側がその<script>要素のソースとして解釈すると思います。
ただ、firefoxで<script type="text/x-perl">でperlのスクリプトが動くとしても
ソースが Hello, World. じゃ無意味なような....
test.js の方はcgi-bin/の中にあるんで、Webサーバー側が無理やり実行しよう
として、サーバー側でエラーになって"Premature end of script headers" を
テキストとしてレスポンスし、javascriptがエラーを吐くっじゃないかと思います。
抜本的に何をされたいのか解らないので、あしからずの回答です。
この回答への補足
私の拙い質問にご丁寧に回答いただき誠にありがとうございます.
目的は以下URLにあるサンプルをローカルPC上でテストすることです.
http://cytoscapeweb.cytoscape.org/tutorial
これまで,
1.パスを適切に設定し,firefox からファイルを直接読みに行くとサンプルを正常に表示できることは確認しました.
2.しかしローカルPC上にApacheを設定・起動し,http://localhost/で読みにいくと js ファイルに対して premature のエラーが発生しました.
3.サーバの設定に問題があると考え,いろいろ試行錯誤するうちに簡単なソースのほうが設定の間違い探し・切り分けに適当かと考え先の質問のファイルを作成するにいたりました(perlはcgiの動作を確認するためにテストしました).ご指摘を受けtest.html,test.jsを以下のように修正してみました:
*** test.html ***
<html>
<head>
<title>Test Example</title>
<script type="text/javascript" src="/cgi-bin/test.js"></script>
</head>
<body>
<script type="test/javascript">
<!--
exf();
//-->
</script>
TEST
</body>
</html>
*** test.js (755) ***
function exf() {
var date=document.lastModified;
document.write(date);
}
ただ,このようにしても,
[error] [client 127.0.0.1] Premature end of script headers: test.js, referer: http://localhost/test.html
のエラーが発生し,表示がされません.
初心者のため,勘違い等々あるかと存じますが,
何かおかしいところがありましたら,ご教授いただければと存じます.
どうかよろしくお願いいたします.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ファイルのfunctionの読み込み方
-
javascriptとApacheの設定
-
外部JavaScriptの設置場所について
-
cssにjavascriptを入れる?呼び...
-
javascriptで別ファイルから変...
-
外部ファイルJS参照を全て消さ...
-
メールフォーム、受信メールの...
-
javascriptのalertで文字化けが...
-
JavaScriptの外部ファイル読み込み
-
javascript内で外部ファイルを...
-
ホームディレクトリを示すチル...
-
外部JavaScriptファイルから呼...
-
外部ファイルでBODYのonloadイ...
-
<a href="#" …>の意味を教えて...
-
JavaScriptからVBScriptの呼び...
-
SQLのWHEREで全てを質問する方法
-
html メールリンクにて自動ファ...
-
bodyにidをつける理由は何ですか?
-
ページの読み込みが完了してか...
-
新しいウィンドゥを最大化で立...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルのfunctionの読み込み方
-
cssにjavascriptを入れる?呼び...
-
javascriptファイルは1つに統...
-
複数のJavascriptを1つのscrip...
-
Dreamweaver で 外部JSを読み込...
-
javascriptとApacheの設定
-
JavaScriptのエラー ( 関数の...
-
JavascriptとJqueryを混在し記述
-
ひとつの外部ファイルに複数の...
-
プルダウンメニューを別ファイ...
-
【Google Apps Script】「ライ...
-
外部ファイルを読み込ませるた...
-
JavaScriptで他のファイルのhtm...
-
ホームディレクトリを示すチル...
-
javascriptのalertで文字化けが...
-
外部読み込みで動かないときの...
-
条件分岐で、読み込む外部スク...
-
呼出したjsファイル内で他jsフ...
-
メールフォーム、受信メールの...
-
<script src="">読み込まない
おすすめ情報