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: *"); 

我会尝试在web.config上设置此项,因为您在IIS服务器上运行:

https://gist.github.com/corydeppen/3518666

         

我的解决方案是使用UTF-8编码重新保存PHP文件 。 显然,我使用的原始文本文件(我复制到位并覆盖了快速测试)使用了一些其他时髦的编码。

没有得到任何解决方案,所以我只是将它移动到一个临时目录并使用FTP将其移动到另一个域….