2013-02-12 82 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