2

我对 jquery 的 $.post 函数和(我认为的)跨域安全问题有疑问。

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

这是 'latest.php' 的 javascript 代码,发出 post 请求的文件:

$.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);
               });

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

4

5 回答 5

5

403 Forbidden是服务器生成的响应,与“同源策略”无关。真的无法提供比这更进一步的帮助,但这将与配置相关——而不是跨域问题。


编辑:我打算建议这是缺乏执行权限,但你已经做了 777 chmod,你可以用 打它GET,这有点令人困惑。为了不完全没用,这里有一个链接建议您需要使用644 而不是 777


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

于 2012-05-16T19:25:06.560 回答
3

好。我让它工作了。

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

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

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

于 2012-05-18T13:41:28.140 回答
1

嗨,禁止错误,这是因为使用 post 方法并且在服务器端 CORS 未实现与客户端 CORS 一起使用

于 2013-11-26T20:55:54.353 回答
0

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

于 2012-05-16T19:27:08.627 回答
0

与您的托管服务提供商检查 mod_security!将其列入白名单或禁用它时,与此类似的大多数问题都已解决!

于 2017-09-02T19:08:42.147 回答