php - 使用 'iframe' 在 php 中创建一个用于上传图片的 http 代理

标签 php javascript ajax proxy cross-domain

用例:我正在开发一个使用 ajax upload 的图片 uploader 功能。我想将图像上传到用户在网站上创建的子域。例如,当用户在网站上创建域时,我复制了一个 php 脚本,用于将图像上传到新域即 image-cropping.php。当用户将任何图像上传到他的域时,我想向该文件发送请求。

问题:
当我尝试上传图像时出现错误:访问属性“readyState”的权限被拒绝。我正在调用js 文件xyz.google.com 上,上传 php 脚本在 abc.google.com 上。

研究
在做了一些谷歌搜索和研究后,我了解到 javascript 不允许跨域发送请求,它需要一个 http 代理来处理这个。这是我试过的代码。运行 ajax uploader 的脚本.在行动中,我有其他域上文件的路径(路径是动态构建的)。

   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用于上传图片。部分代码为

   $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 和 2) 您必须将代理设置为操作,因为这是允许您上传文件的地方。然后,代理会将请求发送到另一个域,它可以将文件发送到该域。

3) 取决于您的代理实现。您应该避免在本地存储文件或执行/包含来自用户输入的任何内容,就像在编写 php 脚本时一样。直接将tmp文件发送到目标服务器,这也是最快的实现方式。

关于php - 使用 'iframe' 在 php 中创建一个用于上传图片的 http 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14832334/

相关文章:

javascript - 在javascript中跨域发布二进制数据

php - 我得到重复的注册表

javascript - 图片旁边的特殊缩进文本

javascript - 使用 Angular 在附加的 html 上运行 JS

javascript - 获取表单提交按钮值属性值( Angular )

javascript - 无法使用 jQuery AJAX 从服务器获取孟加拉语语言的数据

php - Codeigniter 模型中未定义的方法

php - zend 引擎返回对象引用

php - 如何处理带有要保存的php mysql中的输入文本的选择表单

javascript - 检测 2 个日历值何时更改