PHP标头不适用于Access-Control-Allow-Origin
我正在使用Blueimp的jQuery File Upload插件将图像上传到服务器。 问题是,发送服务器是admin.example.com
,存储图像的接收服务器位于www.example.com
。 相同的域,不同的子域。
我按照这里关于设置跨域上传的说明进行操作,就代码而言,一切似乎都是正确的,但是当我尝试上传图像时,我收到此错误:
XMLHttpRequest cannot load http://www.example.com/upload/. Origin http://admin.example.com is not allowed by Access-Control-Allow-Origin.
上传文件夹具有读写权限。
我将在下面发布我的代码 – 如果有人可以告诉我如何解决这个问题,请告诉我。 之前我曾经问过这个问题,并且会尝试其他一些解决方案(iframe上传和ftp文件移动)。 这些都不适合我的情况,如果我能这样做就最简单……
接收服务器
index.php <?php error_reporting(E_ALL | E_STRICT); require('UploadHandler.php'); $upload_handler = new UploadHandler();
发送服务器
main.js $(function () { 'use strict'; // Initialize the jQuery File Upload widget: $('#fileupload').fileupload({ // Uncomment the following to send cross-domain cookies: xhrFields: {withCredentials: true}, url: 'http://admin.example.com/upload/', disableImageResize: false, dropZone: $('#dropzone'), imageMaxWidth: 1800, imageMaxHeight: 1800, }); });
我再次尝试上传iframe文件,所以请不要建议,除非你能给我完整的工作代码……
我也尝试过header('Access-Control-Allow-Origin: *');
但得到同样的错误…我试图在周末完成这个,所以我很感激我能得到任何帮助。 🙂
谢谢!
编辑:这是失败的OPTIONS请求的响应标头
Allow:OPTIONS, TRACE, GET, HEAD, POST Content-Length:0 Date:Tue, 27 Aug 2013 15:08:29 GMT Public:OPTIONS, TRACE, GET, HEAD, POST Server:Microsoft-IIS/7.5 X-Powered-By:ASP.NET
我使用这个标题和它的工作对我来说
header('content-type: application/json; charset=utf-8'); header("access-control-allow-origin: *");
我的解决方案是使用UTF-8编码重新保存PHP文件 。 显然,我使用的原始文本文件(我复制到位并覆盖了快速测试)使用了一些其他时髦的编码。
没有得到任何解决方案,所以我只是将它移动到一个临时目录并使用FTP将其移动到另一个域….