所以重点是我有一个子域,它是用于上传文件的 API 端点。但是当我尝试使用 jQuery 将任何内容上传到此子域(来自主 www 域)时,我收到错误
XMLHttpRequest cannot load http://1.storage.site.net/upload. Origin http://www.site.net is not allowed by Access-Control-Allow-Origin.
我尝试了一切:nginx 中的 header 、源代码中的 header ,我什至尝试使用仅将文件发送到 stub 文件
<?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)——不是(不允许来源)。有办法解决吗?
请您参考如下方法:
我敢打赌,5MB 文件对于 Apache 的 max_request_body 设置(或无论其名称是什么)来说太大,导致 PHP 脚本无法执行,因此永远无法发送这些 header ,这进而产生误导性的跨域错误。
如果这个假设成立,您应该在浏览器的“网络”选项卡中看到更多详细信息 - 上传脚本应该返回某种错误条件。
要进行调试,您可以执行常规的基于表单的文件上传、测试并调整直至其正常工作。
