2011-08-03 6 views
2

내 웹 사이트에 Valums Ajax Uploader을 사용하고 있습니다. 모든 것은 내 로컬 컴퓨터에서 잘 작동하지만 난 내 웹 사이트 메인 서버에서 동일한 업 로더를하려고 할 때 다음 Firbug이 오류 보여줍니다valums Ajax 파일 업 로더 + 406 허용 불가 오류 Firbug에서

POST http://www.myexampledomain.com/upload.php?qqfile=201004151821387.1.flv (406) 불가 8.37s
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 및에

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 

는 이미 구글에서 검색 한이 웹 사이트하지만 유용 아무것도 내가이 문제를 해결할 수있는 방법을 그렇게 말씀 해주십시오 발견 :파일의 코드는 근처에 1204이 줄 없습니다?

이 문제에 대한 내 다른 질문 - 406 error on firebug only

+0

upload.php도 적절한 폴더에 있습니다. 나는 그것을 direcly에 액세스하여 검사했습니다. – Peeyush

+0

간단한 '.txt' 파일을 오류없이 업로드합니까? 또는 406 업로드가 모두 실패 했습니까? – andyb

+0

.txt도 같은 406 오류가 발생합니다. – Peeyush

답변

0

나는 mod_security이 방법으로 점점 생각합니다. 그것은 하나이 다음 당신의 .htaccess에 추가하여 POST 검사를 비활성화하는 것입니다 해결하기 위해 (? 전용) 방법을 보인다 :

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

내가 응용 프로그램의 루트 디렉토리에 .htaccess를 추가하려고하고 작동 희망 호스팅 제공 업체가 사용자 특정 파일 .htaccess을 허용하지 않을 수 있습니다.

관련 기사 - http://tech.shantanugoel.com/2008/05/01/http-406-errors-galore.html

+0

.htaccess 파일에이 파일을 추가했지만 여전히 406 오류가 발생합니다. – Peeyush

+0

[override] (http://httpd.apache.org/docs/2.2/mod)를 사용하지 못할 수 있습니다. /core.html#allowoverride) 호스팅 제공 업체 설정 당신은 이것에 대해 그들에게 물어 보았습니까? http://corz.org/serv/tricks/htaccess.php'.htaccess'의 유용한 요약 – andyb

0

이 문제를 해결하는 데 도움이 될 것입니다 있는지 확실하지 않습니다,하지만 나는 최근에 JQuery와 $의 아약스를 사용하여 POST'ing으로이 같은 문제를 가로 질러왔다. 또한 Ajax와 POST를 약간 사용하는 JQuery Qaptcha를 사용하여 비슷한 문제가 발생했습니다.

두 경우 모두 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가 아닌)과 다른 경우 모든 파일 업로드 요청을 차단하는 규칙이있을 수 있습니다.

먼저 - 아파치 설정 파일에서 그 행을 주석 처리 할 수 ​​있습니다.

두 번째 (더 valums 업 로더와 관련하여 더 편리) - 인코딩 : 'multipart'옵션을 파일 업로드 프로그램에 추가하면 콘텐츠 인코딩을위한 multipart/form-data가 추가되어 apache가 해당 요청을 허용합니다.

+0

어떻게 multipart/form-data를 ajax 요청에 추가 할 수 있습니까? valums 업 로더 용 – 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를 ​​비활성화하는 것은 일부 보안 구멍 서버 측을 예상 할 수있는, 자신의 위험에 위의 사용하십시오.

관련 문제