2013-03-21 7 views
5

私はこれに対する解決策を見つけようとしましたが、他の406の問題に対する解決策は私を助けませんでした。Apache 406 Accept:headerを指定しても受け入れられません

MacでPHPとApache Webサーバーを有効にしました。 :私は、「アプリケーション/ JSONを受け入れる」を除外した場合、

$ curl -X GET -H "Accept: application/json" http://localhost/test/tester 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>406 Not Acceptable</title> 
</head><body> 
<h1>Not Acceptable</h1> 
<p>An appropriate representation of the requested resource /test/tester could not be found on this server.</p> 
Available variants: 
<ul> 
<li><a href="tester.php">tester.php</a> , type application/x-httpd-php</li> 
</ul> 
</body></html> 

しかし:ヘッダセット、それが406エラーで失敗します。私は、私は同意するとの要求を渡す(POSTまたはGET)場合ことを発見しました要求はエラーなしで実行されます。

私は(テスト/ tester.phpを同じディレクトリにある)、この試験/ tester.varを追加してみました:

URI: tester 

Content-type: application/json 
URI: tester.php 

私の意図は、とのリクエストを処理するようにApacheに指示した「同意する:アプリケーション/ JSON」 tester.phpを実行してください。しかし、私の助けにはなりませんでした(私のhttpd.confファイルの中に 'IfModule mime_module'の下に 'AddHandler type-map .var'を追加してサーバを再起動しました)。

「mod_securityの」を設定する表示されませんが、私はとにかく私のテスト/ディレクトリに次の.htaccessを追加しました:

<IfModule mod_security.c> 
SecFilterEngine Off 
SecFilterScanPOST Off 
</IfModule> 

はこれらは私がなしで、ネット上で見つかったがために働いているソリューションです私。

アイデア?

答えて

1

私はついに修正を見つけました!私が疑っていたように、* mod_security *は私の問題とは関係がありませんでした。 「のIfModule mime_module」の「AddHandlerのタイプマップVAR」行 のコメントを外すことで型マップを有効

  1. :ここ

    は私が /etc/apache2/httpd.conf に加えられた変更されていますセクション。

  2. は "のIfModule mime_module" セクションに次の2行を追加しました:私のPHPのソースディレクトリで

    AddType application/x-httpd-php .php 
    MultiviewsMatch Handlers Filters 
    

、私はtester.phpを同じディレクトリにtester.varを作成しました内容:

Content-type: application/json 
    URI: tester.php 

これですべてが良いです。

+0

何が原因で問題が発生しますか? MacでChromeからajax POSTリクエストを作成するときに同じ問題が発生していますが、残りのOSやウェブブラウザでうまく動作しています –

関連する問題