0

這是我的問題:針對所有瀏覽器的跨域文件上傳解決方案?

我有2個Web應用程序,並希望從第1個到第2個文件上傳文件。所以我必須面對'同源政策'問題。

在我的情況下,我擁有第二個網站,第一個網站不是我的。這是我現有的Web應用程序的新客戶,並開發與PHP和由於我缺乏PHP的知識,我不能做服務器端PHP編碼。所以我只能將一些JavaScript代碼放入其中一個頁面中。所以我沒有代理服務器選項。

而第三個問題是我必須在所有瀏覽器(包括IE8 +)中獲取此文件的上傳工作;所以我也不能使用File API和XHR。

我的噩夢的任何解決方案?

+0

[此jQuery插件](https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads)可能會有幫助。 –

+0

「跨站點XMLHttpRequest文件上傳」基於File API。關於「跨站點iframe傳輸上傳」,不幸的是,不能訪問不同域上的iframe響應正文。 – Hosein

+0

也許是時候學習一點PHP了。 :) –

回答

1

我不知道你需要多少數據要發送的上游,但是,這裏有兩個選項:

1)使圖像的請求,其中包含所有相關數據在URL:

將要發送到上游的數據解析爲查詢字符串參數,然後將這些數據提交給知道如何從URL中讀取和收集這些數據的特殊Web服務。服務器響應應該是空的。注意:URL不應超過2000個字符。如果你有一個大的數據集,你會想使用選項2

例:

/* I'd recommend doing the following with jQuery or some other JS framework */ 
var img = document.createElement('img'); 
img.src = "http://website2.com/uploadHandler" + 
      "?data1="+encodeURIComponent(data1) + 
      "&data2="+encodeURIComponent(data2); 
document.getElementsByTagName("body")[0].appendChild(img); 

總產值(body標籤的結束):

<img src="http://website2.com/uploadHandler?data1=myName&data2=myInformation" /> 

這將導致一個HTTP在上述地址向您的服務器發出GET請求。訣竅是你實際上不會提供圖像,而是從請求中收集數據。

2)表單POST:

使用JavaScript來創建一個表單,並填充包含您要上傳的數據輸入字段的形式。您可以使用myForm.submit()自動提交此表單。使用jQuery這看起來像這樣:

$(document.body).append($('\ 
    <form name="myform" action="http://website2.com/uploadHandler">\ 
    <input type="text" name="data1" value="myName" />\ 
    <input type="text" name="data2" value="myInformation" />\ 
    </form>')); 
document.myform.submit(); 

使用這種技術將導致一個新的頁面加載。但是,您可以在服務器端使用重定向來重定向到原始頁面。如果您選擇重定向,請閱讀以下內容:http://www.theserverside.com/news/1365146/Redirect-After-Post

+0

由於URL的大小有限制,我不認爲你提出的第一個選擇是針對我的情況的解決方案。因爲可能有這麼多的服務器調用。 – Hosein

+0

我真的更喜歡Ajax風格的上傳,但我對此毫無希望,並在思考另一種方式。謝謝,我的朋友。 – Hosein

相關問題