我正在使用Blueimp的jQuery文件上传插件将图片上传到服务器。问题是,发送服务器是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
header('Access-Control-Allow-Origin: http://admin.example.com'); //I have also tried the * wildcard and get the same response
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
?>
<?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
Access-Control-Allow-Origin
的任何内容... - Caleb