2014-09-05 82 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或以前的版本。

希望這會有所幫助。