我遇到了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编码的图像)而不受欢迎。
$.post("base64.php", { url: t_url },
function(data){
data = "data:image/gif;base64,"+data;
draw(data);
});
所以,我完全不知道出了什么问题。
答案 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! 白名单或禁用它时解决了与此类似的大多数问题!