5

所以重点是我有一个子域,它是用于上传文件的 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]);

用两个词来说:没有任何作用。

但。我注意到小文件(~1MB)正确上传,文件稍大(比如5MB)——不(不允许来源)。

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

4

1 回答 1

2

我敢打赌,5MB 文件对于 Apache 的设置(或任何名称)来说太大了max_request_body,导致 PHP 脚本没有被执行,因此永远无法发送这些标头,这反过来又会产生误导性的跨域错误。

如果这个假设成立,您应该在浏览器的“网络”选项卡中看到更多详细信息 - 上传脚本应该返回某种错误条件。

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

于 2013-03-15T13:18:18.820 回答