JQuery $ .post在同一个域上返回403 Forbidden

时间:2012-05-16 19:23:43

标签: php jquery ajax http

我遇到了jquery的$ .post函数和(我认为)跨域安全问题。

奇怪的是,我试图发布的页面与发送帖子的页面位于同一目录中。

这是发布帖子请求的'latest.php'的javascript代码:

$.post("upload.php", { base64: fCanvas, description: description }, function(data){
             // some things happen here
        });

upload.php是一个php脚本,它将base64变量的内容上传到Tumblr。

javascript控制台显示403 Forbidden错误。我试过chmodding -777'upload.php',但这并没有改变任何东西。

使用$ .get而不是$ .post有效,但由于安全原因以及$ get数据的长度限制(我发送base64编码的图像)而不受欢迎。


编辑:我将'latest.php'上的$ .get请求之一更改为$ .post,并且它正在工作......

$.post("base64.php", { url: t_url },
               function(data){
                 data = "data:image/gif;base64,"+data;
                 draw(data);
               });

所以,我完全不知道出了什么问题。

5 个答案:

答案 0 :(得分:5)

403 Forbidden是服务器生成的响应,与" Same Origin Policy"无关。无法提供任何进一步的帮助,但它会与配置相关 - 而不是跨域问题。


编辑:我打算建议这是缺乏执行权限,但你已经完成了777 chmod,你可以用GET点击它,这是善良的令人困惑的。为了不完全无用,这里有一个链接,表明您需要使用644 instead of 777


另一个建议:mod_security(或其他配置)中是否启用了.htaccess?众所周知,它对包含标记/网址或其他潜在XSS尝试等内容的表单值不友好。

答案 1 :(得分:3)

好。我搞定了。

我尝试将较小的(仍然是base64编码的)图像发送到我的upload.php脚本,它完成了这项工作。似乎jQuery的post函数无法处理大量数据(相对而言,它只是一个640x453图像)的数据量。

我通过使用XMLHttpRequest()来解决问题。它就像一个魅力。

如果有人知道jQuery的Ajax的确切问题,请告诉我,因为我仍然不知道为什么我的数据导致HTTP Forbidden错误。

答案 2 :(得分:1)

在禁止错误中,因为使用post方法而在服务器端CORS没有实现与Client CORS一起使用

答案 3 :(得分:0)

尝试使用绝对链接(对我有用)。

答案 4 :(得分:0)

与托管服务提供商核对mod_security! 白名单或禁用它时解决了与此类似的大多数问题!