跨域jQuery AJAX文件上传

时间:2013-03-15 13:07:48

标签: jquery ajax nginx cross-domain

所以关键是我有一个子域,它是用于上传文件的API端点。但是,当我尝试将任何带有jQuery的内容上传到此子域(来自主www域)时,我收到错误

  

XMLHttpRequest无法加载http://1.storage.site.net/upload。 Access-Control-Allow-Origin不允许原点http://www.site.net

我尝试了一切:nginx中的头文件,源代码中的头文件,我甚至尝试将文件发送到存根文件,只需

<?php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Content-type: application/json');
header('Access-Control-Allow-Headers: *');

echo json_encode(['lulz' => 123]);

用两个词说:没有工作。

BUT。我注意到小文件(~1MB)正确上传,文件稍大(比如5MB) - NOT(原因不允许)。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

我敢打赌,5MB文件对于Apache的max_request_body设置来说太大了(或者不管它的名字是什么),导致PHP脚本没有被执行,因此永远不会发送那些标题,而这些标题又会生成误导性的跨域错误。

如果这个假设成立,你应该在浏览器的“网络”标签中看到更多细节 - 上传脚本应该返回某种错误状态。

要进行调试,您可以执行正常的基于表单的文件上传,测试并调整内容直到它工作。

相关问题