2014-09-05 96 views
1

我有一个小问题,我需要创建一个文件上传到远程服务器使用jquery Blueimp Fileupload,如果我工作在本地进行测试它现在正在完美工作,当我在现场测试它时,我有一个跨源的问题资源共享。jquery fileupload跨域

现在,我怎样才能检索从另一个域的json响应而不使用jsonp,因为我试过jsonp,它不能使用fileuploader,所以现在我想单独使用json来获取我需要的响应,如果这样做可能

我也试过把回调=?在URL的末尾..还没有工作

或者如果可能的话我怎么能整合JSONP这个fileuploader

$('#fileuploader').fileupload({ 
     sequentialUploads: true, 
     url: 'http://www.domain.com/test/upload?callback=?', 
     dropZone: $('#fileuploader') 
}); 

服务器端这是另一个域

echo json_encode(array('test' => 'value1')); 

另外:我不允许使用ftp/curl for this ..谢谢

回答

1

你可以在服务器上允许CORS请求:

header("Access-Control-Allow-Origin:*"); 
    header("Access-Control-Allow-Methods: POST, GET, OPTIONS"); 

当服务器启用CORS时,Ajax首先发送OPTIONS请求来检测服务器是否允许CORS请求。如果启用,它会发送实际的请求。

+0

没有,如果我将它添加到服务器端仍然不起作用 – eaponz 2014-09-05 06:47:27

1

如果您已经允许上述建议的远程服务器上的CORS策略,并且您仍然收到Cross Origin错误,那么可能是您的代码中有其他内容不起作用。很多时候,Firebug或类似的工具都显示Cross Origin错误,实际上它是404或其他东西。要回答的第一个问题是,如果你真的在CORS预飞行的请求/响应。这是您的许可权证。看看这些帖子在这里herehere

1

你可能会考虑使用iframe transport option。这样可以避免使用不支持跨域文件上传的浏览器问题,比如我们以前的(但仍然广泛使用的)朋友IE 9或以前的版本。

希望这会有所帮助。