何らかの理由で、これは機能しません:
$.ajax({
url: "News.html",
cache: false,
}).done(function(data) {
$("#content").load(data);
});
それは私に与えます:
GET http://127.0.0.1/News.html 404 (Not Found)
しかし、何らかの理由で、その URL を手動で開く(URL をコピーして貼り付ける) と問題なく動作します。そして、最初はブラウザのキャッシュと関係があると思ったのでcache: false
、ajax関数にオプションを追加しましたが、それでも.. argh ..
また、ファイルに要求された URL として表示されませんaccess.log
。
私が推測する情報については、私は実行しています:
- lighttpd
- localhost:port 経由の fast-cgi としての php
- マップされた .html => .php
- OpenBSD 5.3 の実行
およびコメント解除 ( /etc/php.ini
):
- cgi.fix_pathinfo=1
また:
# ls *.html
News.html index.html
のリクエストヘッダーは次のNews.html
とおりです。
Request URL:http://127.0.0.1/News.html
Request Method:GET
Status Code:404 Not Found
リクエスト ヘッダー
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:127.0.0.1
Referer:http://127.0.0.1/index.php
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36
X-Requested-With:XMLHttpRequest
応答ヘッダー
Content-type:text/html
Date:Tue, 16 Jul 2013 21:55:05 GMT
Server:lighttpd/1.4.32
Transfer-Encoding:chunked
X-Powered-By:PHP/5.3.21
チェックポイント
これまでのコメントからの結論は、これは jQuery の問題ではない可能性があるということです。サーバーがすべてのデータで応答し(送信された生データを確認しました)、すべてが含まれていることを考慮すると、応答ヘッダーには404
.
つまり、データは見つかりましたが、ヘッダーには404と表示されています...控えめに言っても奇妙です..
カール試験
curl 'http://127.0.0.1/News.html' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: 127.0.0.1' -H 'Accept-Language: en-US,en;q=0.8' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://127.0.0.1/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' --compressed
Here you'll soon find a facebook feed, among other things :)
ゼルクムス試験
# echo "wham bam" > zerkms_doesnt_believe.html
#
設定ファイル
エラーログとそうでないもの
cURL テスト
Python クライアントによる手動 FastCGI テスト:
# python fcgi_app.py
{'FCGI_MAX_CONNS': '1', 'FCGI_MPXS_CONNS': '0', 'FCGI_MAX_REQS': '1'}
少しいじくり回した後、FastCGI プロトコルがどのように機能するかを理解し、自分のニーズに合ったクライアントを見つけました。面白いことに、スクリプトの名前と一致したので、出力は次のとおりです。
# python fcgi_app.py
('404 Not Found', [('x-powered-by', 'PHP/5.3.21'), ('content-type', 'text/html')], '<html>\n\t<head>\n\t\t<title>test php</title>\n\t</head>\n<body>\nChecking</body>\n</html>', '')
で、ソースはこちら
これは実際にはPHPの問題であるという結論を私に与えます(phpが応答する必要がある200コードを尊重しないことでlighttpdが嫌いだったとしても..そしてそれについては申し訳ありません.PHPで少しbashして見てくださいそれが私が結論を出すのに役立つなら)
一時的な解決策
.php ページの上部に以下を配置すると、この問題を回避できます。これはクリーンな回避策であり、機能しますが、長期的な修正ではないことに注意してください。
<?php
header("HTTP/1.0 200 Found");
?>