用例:我正在开发一个使用ajax 上传功能的图像上传器。我想将图像上传到用户在网站上创建的子域。例如,当用户在网站上创建域时,我复制了一个用于上传图像的 php 脚本到新域即image-cropping.php
。当用户将任何图像上传到他的域时,我想向该文件发送请求。
问题:
当我尝试上传图像时,我得到了。我的Error: Permission denied to access property 'readyState'
调用js 文件已打开xyz.google.com
,并且上传 php 脚本已打开abc.google.com
。
研究
在做了一些谷歌搜索和研究之后,我了解到 javascript 不允许跨域发送请求,它需要一个 http 代理来处理这个。这是我尝试过的代码。运行 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)它打开了哪些安全问题(它安全吗?如果不是什么替代方案)?任何指示或建议都会对我有所帮助。
感谢您的时间。
更新:
我正在使用这个代理脚本来上传图片。部分代码是
$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)
时,我的上传脚本上出现了一个空白数组。
我相信我遗漏了一些东西!有人可以纠正吗?
感谢您的时间!