用例:我正在开发一个使用ajax上传功能的图像上传器,我想将图像上传到用户在website.For示例中创建的子域,当用户在网站上创建一个域时,我会复制一个php脚本,用于将图像上传到新域,即当用户将任何图像上传到他的域时,image-cropping.php
.I希望向该文件发送请求。
问题
当我试图上传一个图像时,我会得到Error: Permission denied to access property 'readyState'
.My调用js文件,在xyz.google.com
上,upload php脚本在abc.google.com
上。
Research
在做了一些googling和研究之后,我了解到javascript不允许发送请求跨域,它需要一个http代理来处理this.Here,这是我有tried.The脚本来运行ajax uploader.In操作的代码,我可以在其他域上创建路径(路径是动态构建的)。
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)它带来了哪些安全问题(安全吗?如果不是,还有什么可供选择的)?任何建议或建议都会对我有帮助。
谢谢您抽时间见我。
更新:
我使用这个代理脚本上传代码的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
,但是我无法将图像放到server.When上,我试图做print_r($_FILES)
,我在上传脚本上得到了一个空白数组。
我想我错过了什么!!谁能纠正一下吗?
谢谢您抽时间见我!
发布于 2013-02-12 14:30:31
1和2)必须将代理设置为操作,因为这是允许您上传文件的地方。然后,代理将对另一个域执行请求,它可以将文件发送到该域。
3)取决于代理实现。您应该避免在本地存储文件或执行/包含来自用户输入的任何内容,就像编写php脚本时一样。直接将tmp文件发送到目标服务器,这也将是最快的实现。
https://stackoverflow.com/questions/14832334
复制相似问题