valums Ajax文件上传器+406不可接受
valums Ajax file uploader+406 not acceptable Error In Firbug
我在我的网站上使用Valums Ajax Uploader。在我的本地计算机上一切正常,但当我在我的网站主服务器上尝试相同的上传器时,Firbug显示此错误:
POST http://www.myexampledomain.com/upload.php?qqfile=201004151821387.1.flv 406不接受8.37秒
fileuploader.js (line 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>
所有请求&响应头在这里,在fileuploader.js
文件代码靠近第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
我已经在谷歌和这个网站上搜索过了,但没有发现任何有用的东西,所以请告诉我如何解决这个问题?
我的另一个问题关于这个问题- 406错误的firebug只有
问题出在mod_security.
如果内容编码与表单不同(不是multipart/form-data或form-urlencoded),您可能有规则阻止所有文件上传请求。
首先,你可以在apache配置文件中注释这一行。
第二(对于valums上传器来说更方便)-在你的fileuploader中添加encoding: 'multipart'选项-这将为Content-Encoding添加multipart/form-data,这样apache将允许该请求。
我有同样的问题,我通过在。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可能会导致服务器端出现一些安全漏洞。
我认为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
我不确定这是否有助于解决您的问题,但我最近在使用JQuery $.ajax进行POST时遇到了同样的问题。我也有一个类似的问题使用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或专用服务器上,您可以自己进行所需的更改。
希望对你有帮助。
- 接受不在列表中的值-引导组合框
- 如何在HTML输入字段中添加不可删除的后缀
- JavaScript上下滚动不可预测
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 在ReactJS中重新渲染孩子3次可以接受吗
- 硒元素在这一点上是不可点击的
- http.listen()在运行时接受终端命令
- 错误:[$compile:nonassign]表达式'未定义'与指令'内容可编辑'是不可
- autocomplete不接受源的json对象
- 将接受标头参数传递给jQueryAJAX
- 接收406(不可接受)用于AJAX动作Rails4
- 在SPRING中从ajax调用响应时显示不可接受错误
- 当我将 Java 对象传递给客户端时,我得到“406 不可接受”
- Rails render_to给出406不可接受的错误
- 406(不可接受).尝试使用@Responsebody从spring处理函数返回对象或整数到ajax请求
- Ajax和Rails完成406不可接受
- 在jQuery-ui dropable中检测不可接受的拖放
- valums Ajax文件上传器+406不可接受
- 轨道406〃;不可接受”;远程表单错误
- Moltin Javascript问题:Moltin.Cart.Complete退货406不可接受