2011-08-03 19 views
2

私のウェブサイトにValums Ajax Uploaderを使用しています。すべては私のローカルコンピュータ上で正常に動作しているが、私は私のウェブサイトのメインサーバー上の同じアップローダーをしようとすると、その後Firbugはこのエラーを示しています。8.37s
valums Ajaxファイルアップローダー+ 406受け入れられないエラーFirbugで

POST http://www.myexampledomain.com/upload.php?qqfile=201004151821387.1.flv 406受け入れられないfileuploader.js(ライン1204)

レスポンスボディ

<title>406 Not Acceptable</title> 
<p>An appropriate representation of the requested resource /upload.php could not be found on this server.</p> 
<p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p> 

すべてのリクエスト&レスポンスヘッダがhereとであります何の1204行ないに近いファイルのコードです:

params = params || {}; 
params['qqfile'] = name; 
var queryString = qq.obj2url(params, this._options.action); 

xhr.open("POST", queryString, true); 
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name)); 
xhr.setRequestHeader("Content-Type", "application/octet-stream"); 
xhr.send(file); //line 1204 

私はすでにGoogleで検索しました。このウェブサイトが、役に立つ何をので、どのように私はこの問題を解決することができます教えてください発見されましたか?この問題に関する

私の他の質問 - 406 error on firebug only

+0

upload.phpも適切なフォルダにあります。私はディレクトリに直接アクセスして確認しました – Peeyush

+0

単純な '.txt'ファイルはエラーなしでアップロードされますか?または、すべてのアップロードが406で失敗していますか? – andyb

+0

.txtも同じ406エラーを返します – Peeyush

答えて

0

私はmod_securityが邪魔になっていると思います。

<ifmodule mod_security.c> 
SecFilterScanPOST Off 
</ifmodule> 

私は、アプリケーションのルートディレクトリに.htaccessを追加しようと、それが動作望んでいるだろう:それは、1つのこの問題を解決するために(?のみ)の方法は、あなたの.htaccessに以下を追加することにより、POSTのスキャンを無効にすることであるように見えますホスティングプロバイダはユーザー固有のファイル.htaccessを許可しない可能性があります。

関連記事 - http://tech.shantanugoel.com/2008/05/01/http-406-errors-galore.html

+0

私はこれを.htaccessファイルに追加しましたが、それでも406エラーを返します – Peeyush

+0

あなたは[上書きする]ことはできません(http://httpd.apache.org/docs/2.2/mod /core.html#allowoverride)ホスティングプロバイダの設定。あなたはこれについて彼らに尋ねましたか? http://corz.org/serv/tricks/htaccess.php '.htaccess'の便利な要約 – andyb

0

これはあなたの問題を解決するのに役立ちますかどうかはわからないが、私は最近、jQueryの$のアヤックスを使用してPOST'ingでこれと同じ問題に出くわしました。私もJQuery Qaptchaを使用して同様の問題を抱えていました。これはAjaxとPOSTを少し使用しています。

どちらの場合でも、POSTをGET(呼び出されていたPHPファイルを含む)に変更することができ、それがホストのライブサーバーで動作するようになりました。

私はこの分野でかなり経験していないので、これを行うことの悪い点や悪い点を十分に理解していないので、これが悪いことであるかどうかについて誰かが考えていると、

例:

if($cust_acceptance == 'yes') { 

    $.ajax({ 
     type: "GET", //Swapped out a POST for a GET. 
     url: "/scripts/php/update_shortlist.php", 
     data: "action=add&shortlist_id="+shortlist_id+"&rb_ref="+rb_ref, 
     success: function(msg){ 
      //alert ("success: "+rb_ref); 

私は他の人はそれがmod_securityを持つ権限の問題であることが正しいですが、あなたはあなたのため、これらの設定を変更するには、ホスティング会社を説得することはできそうにないと思います - あなたがしている場合共有サービスを使用します。明らかに、VPSまたは専用サーバーを使用している場合は、必要な変更を自分で行うことができます。

希望に役立ちます。

2

問題はmod_securityです。

おそらく、コンテンツのエンコーディングが(multipart/form-dataやform-urlencodedではなく)フォームと異なる場合、すべてのファイルアップロードリクエストをブロックするルールがあります。

最初に、その行をあなたのapache設定ファイルにコメントすることができます。

2番目(そしてvalums uploaderに関してもっと便利です) - エンコーディングをファイルアップロードに追加すると、Content-Encodingのmultipart/form-dataが追加され、apacheはその要求を許可します。

+0

ajaxリクエストにmultipart/form-dataを追加する方法は? valums uploaderのパラメータ の場合は – albanx

+0

エンコーディング: 'multipart'、 –

1

私は同じ問題を抱えています、と私は.htaccessファイルでのmod_securityを無効にすることで、それを解決し

<IfModule mod_security.c> 
    # Turn off mod_security filtering. 
    SecFilterEngine Off 

    # The below probably isn't needed, 
    # but better safe than sorry. 
    SecFilterScanPOST Off 
</IfModule> 

のmod_securityを無効にすると、いくつかのセキュリティホールのサーバ側を予想することができますよう、ご自身の責任で上記使用してください。

関連する問題