2013-02-12 85 views
2

使用案例:我的工作,它採用ajax upload function.I要上傳圖片到一個子用戶創建的website.For例如圖片上傳,當用戶在網站上創建一個域名時,我複製了一個用於將圖像上傳到新域名的php腳本,即image-cropping.php。我想在用戶將任何圖像上傳到他的域名時向該文件發送請求。創建一個HTTP代理服務器使用「IFRAME」上傳圖片

問題
當我嘗試上傳的圖像,我得到Error: Permission denied to access property 'readyState'。我呼籲JS文件xyz.google.com和上傳PHP腳本是abc.google.com

研究
做一些谷歌上搜索和研究,我學會後的JavaScript將不允許發送請求跨域,它需要一個HTTP代理服務器來處理this.Here是代碼我有tried.The腳本運行ajax上傳器。在行動中,我有其他域上的文件路徑(路徑是動態構建的)。

new AjaxUpload(btnUpload, { 
     action: 'includes/modules/domain_creation/proxy.php', 
     name: 'image', 
     onSubmit: function(file, ext){ 
      if (! (ext && /^(jpg|png|jpeg|gif|JPG|JPEG|PNG|GIF)$/.test(ext))){ 
       alert('Only JPG, PNG or GIF files are allowed'); 
       return false; 
      } 
      $('#thumbImg').html('<img src="http://localhost/gobiggi_VS_2_2/images/appImages/imageLoader.png" />'); 
     }, 

1)我在正確的方式(它的工作爲第一次)做這件事?是代理實際需要
2)如何以及在哪裏可以設置代理以便可以協商錯誤許可?
3)它打開了什麼安全問題(安全嗎?如果不是什麼替代方案)?任何指針或建議對我都有幫助。
謝謝你的時間。

更新:
我使用這個代理script上傳的代碼image.Part是

$domainUsername = $_SESSION['domainUsername']; 
    $domainNameWeb = $_SESSION['domainName']; 
    //$fileParameterProxy = $_FILES['image']; 
    //Destination URL: Where this proxy leads to the upload script 
    $destinationURL = 'http://www.'.$domainNameWeb.'/'.$domainUsername.'/upload.php'; 
    //The only domain from which requests are authorized. 
    $RequestDomain = 'abc.net'; 

現在我沒有得到Error for permission但我不能夠獲得圖像當我嘗試執行print_r($_FILES)時,我的上傳腳本中出現空白數組。

我相信我錯過了一些東西!!有人能改正嗎?
謝謝你的時間!

回答

1

1和2)您必須將您的代理設置爲操作,因爲這是您允許上傳文件的地方。然後代理將請求發送到其他域,它可以將文件發送到該域。

3)取決於您的代理實施。你應該避免在本地存儲文件,或者執行/包含任何來自用戶輸入的東西,就像在編寫php腳本時一樣。直接將tmp文件發送到目標服務器,這也是最快的實現。

+0

謝謝你的投入,但你能幫助我的要求會如何呢?另外,我學會了http請求不被安全使用'https' instead.Can你扔一些輕就可以了嗎? – KillABug 2013-02-12 14:34:43

+0

你使用哪種代理?它存儲在哪裏? http未加密,https是。但是,如果你需要它取決於你發送的數據。它是否敏感? – 2013-02-12 14:40:07

+0

目前我沒有使用任何代理。實際上第一次使用代理! :PI試圖發送一個普通的'http'請求如在上面的問題,並得到了錯誤mentioned.The功能特別需要**上傳圖片**存儲在用戶域(用戶將創建從網站他自己的域)。該隨着用戶數據被嵌入其中,信息有些重要。 – KillABug 2013-02-12 14:44:47