阿贾克斯图片上传的形式返回禁止403错误斯图、形式、错误、上传

2023-09-10 20:16:37 作者:青稚

大家好,

我目前正在摆弄这个pre撰写的Ajax / PHP的图片上传脚本,而是试图弄清楚为什么它抛出403 Forbidden错误将近2天后(您没有权限访问/ ajaxupload。 PHP 此服务器)上,我出选择,但要问大师在这里。

我怀疑它是与我的主机服务器的设置,但在此之前我费尽口舌他们(需要一天通常会为他们找回的答案),我想我可能会仔细检查你的家伙,万一我失踪一些事情,因为我是新来使用AJAX,我怀疑这是在脚本断层。

由于任何人谁可以提出什么,我做错了。

干杯,LEA。

HTML:上传表单:

 <形式的行动=htt​​p://www.mysite.com/ajaxupload.php方法=邮报名称=圆滑ID =圆滑ENCTYPE =的multipart / form-data的>
    <输入类型=隐藏名称=最大范围值=9999999999/>
    <输入类型=隐藏名称=maxW值=200/>
    <输入类型=隐藏名称=FULLPATH值=htt​​p://mysite.com/uploads//>
    <输入类型=隐藏名称=relPath值=../上传//>
    <输入类型=隐藏名称=colorR值=255/>
    <输入类型=隐藏名称=colorG值=255/>
    <输入类型=隐藏名称=colorB值=255/>
    <输入类型=隐藏名称=maxH值=300/>
    <输入类型=隐藏名称=文件名值=文件名/>
    < P><输入类型=文件名称=文件名 onchange="ajaxUpload(this.form,'http://mysite.com/uploader.php?filename=name&maxSize=9999999999&maxW=200&fullPath=http://mysite.com/uploads/&relPath=../uploads/&colorR=255&colorG=255&colorB=255&maxH=300','upload_area','File上传请稍候...&放大器; LT; BR /&放大器; GT;&放大器; LT; IMG SRC = \'../图像/ loader_light_blue.gif \'宽= \128 \高度= \十五\边境= \0 \/&放大器; GT;','&放大器; LT; IMG SRC = \'../图像/ error.gif \'宽= \16 \'高= \16 \'边界= \ 0 \/&放大器; GT;在上载错误,请检查设置和路径信息源$ C ​​$ C')。返回false;/>< / P>
< /形式GT;
 

记者:ajaxupload.js

 函数$ M(theVar){
    返回的document.getElementById(theVar)
}
函数删除(theVar){
    VAR所在的当前= theVar.parentNode;
    theParent.removeChild(theVar);
}
功能的addEvent(OBJ,evType,FN){
    如果(obj.addEventListener)
        obj.addEventListener(evType,FN,真)
    如果(obj.attachEvent)
        obj.attachEvent(上的+ evType,FN)
}
功能removeEvent(OBJ,类型,FN){
    如果(obj.detachEvent){
    obj.detachEvent('上'+型,FN);
    }其他{
    obj.removeEventListener(类型,FN,假);
    }
}
功能isWebKit(){
    返回正则表达式(为AppleWebKit /)测试(navigator.userAgent的)。
}
功能ajaxUpload(形式,url_action,id_element,html_show_loading,html_error_http){
    变种detectWebKit = isWebKit();
    表= typeof运算(表格)==字符串$ M(表):表;
    VAR埃罗=;
    如果(表== NULL || typeof运算(表格)==未定义){
    埃罗+ =第一个参数的形式不存在\ñ。
    }否则,如果(form.nodeName.toLowerCase()!=形式){
    埃罗+ =。第一个参数的,它不是一个形式\ n中的表;
    }
    如果($ M(id_element)== NULL){
    埃罗+ =第三个参数的元素不存在\ñ。
    }
    如果(erro.length大于0){
    警报(错误呼叫ajaxUpload:\ N+埃罗);
    	返回;
    }
    VAR的iframe = document.createElement方法(IFRAME);
    iframe.setAttribute(ID,Ajax的温度);
    iframe.setAttribute(名,Ajax的温度);
    iframe.setAttribute(宽,0);
    iframe.setAttribute(高度,0);
    iframe.setAttribute(边界,0);
    iframe.setAttribute(风格,宽度:0;身高:0;边界:无;);
    form.parentNode.appendChild(IFRAME);
    window.frames ['AJAX-临时'] NAME =Ajax的温度。
    VAR doUpload =功能(){
    removeEvent($ M('AJAX-温度),负荷,doUpload);
    VAR跨=JavaScript的:;
    穿越+ =window.parent $ M(。'+ id_element +)的innerHTML = document.body.innerHTML;无效(0);;
    $ M(id_element).innerHTML = html_error_http;
    $ M('AJAX-临时')SRC =交叉。
    如果(detectWebKit){
            删除($ M('AJAX-临时'));
        }其他{
            的setTimeout(函数(){删除($ M('AJAX-临时'))},250);
        }
    }
    的addEvent($ M('AJAX-温度),负荷,doUpload);
    form.setAttribute(目标,Ajax的温度);
    form.setAttribute(行动,url_action);
    form.setAttribute(法,后);
    form.setAttribute(加密类型,多部分/表单数据);
    form.setAttribute(编码,多部分/表单数据);
    如果(html_show_loading.length大于0){
    $ M(id_element).innerHTML = html_show_loading;
    }
    form.submit();
}
 

PHP:ajaxupload.php

 < PHP
    功能uploadImage($文件名,$ MAXSIZE,$ maxW,$ FULLPATH,$ relPath,$ colorR,$ colorG,$ colorB,$ maxH = NULL){
    $文件夹= $ relPath;
    $ MAXLIMIT = $ MAXSIZE;
    $ allowed_ext =JPG,JPEG,GIF,PNG,BMP;
    $匹配=;
    $档案大小= $ _FILES [$文件名] ['大小'];
    如果($文件大小大于0){
    $文件名=用strtolower($ _ FILES [$文件名] ['名称']);
    $文件名= preg_replace('/ \ S /','_',$文件名);
    如果($文件大小及小于1){
    $ errorList [] =文件大小是空的。
    }
    如果($文件大小> $ MAXLIMIT){
    $ errorList [] =文件大小是太大了。
    }
    如果(计数($ errorList)。1){
    $ file_ext = preg_split(/\./",$文件名);
    $ allowed_ext = preg_split(/ \,/,$ allowed_ext);
    的foreach($ allowed_ext为$ EXT){
    如果($ EXT ==端($ file_ext)){
    $匹配=1; //文件被允许
    $ NUM =时间();
    $ front_name = SUBSTR($ file_ext [0],0,15);
    $ newfilename = $ front_name_$ NUM端($ file_ext)。。;
    $文件类型=端($ file_ext);
    $节省= $文件夹$ newfilename。
    如果(!file_exists($保存)){
    列表($ width_orig,$ height_orig)=和getimagesize($ _ FILES [$文件名] ['tmp_name的值']);
    如果($ maxH == NULL){
    如果($ width_orig< $ maxW){
    $ fwidth = $ width_orig;
    							}其他{
    $ fwidth = $ maxW;
    }
    $ ratio_orig = $ width_orig / $ height_orig;
    $ fheight = $ fwidth / $ ratio_orig;

    $ blank_height = $ fheight;
    $ top_offset = 0;

    						}其他{
    如果($ width_orig< = $ maxW和放大器;&安培; $ height_orig< = $ maxH){
    $ fheight = $ height_orig;
    $ fwidth = $ width_orig;
    							}其他{
    如果($ width_orig> $ maxW){
    $比=($ width_orig / $ maxW);
    $ fwidth = $ maxW;
    $ fheight =($ height_orig / $比);
    如果($ fheight> $ maxH){
    $比=($ fheight / $ maxH);
    $ fheight = $ maxH;
    $ fwidth =($ fwidth / $比);
    }
    }
    如果($ height_orig> $ maxH){
    $比=($ height_orig / $ maxH);
    $ fheight = $ maxH;
    $ fwidth =($ width_orig / $比);
    如果($ fwidth> $ maxW){
    $比=($ fwidth / $ maxW);
    $ fwidth = $ maxW;
    $ fheight =($ fheight / $比);
    }
    }
    }
    如果($ fheight == 0 || $ fwidth == 0 || $ height_orig == 0 || $ width_orig == 0){
    死亡(严重错误报错code [添加-PIC-线67原稿]到< A HREF =HTTP://www.atwebresults.com'> AT赛博网< / A>中) ;
    }
    如果($ fheight&所述; 45){
    $ blank_height = 45;
    $ top_offset =圆(($ blank_height  -  $ fheight)/ 2);
    							}其他{
    $ blank_height = $ fheight;
    }
    }
    $ image_p = imagecreatetruecolor($ fwidth,$ blank_height);
    $白色= imagecolorallocate($ image_p,$ colorR,$ colorG,$ colorB);
    imagefill($ image_p,0,0,$白色);
    开关($文件类型){
    案GIF:
    $图像= @imagecreatefromgif($ _ FILES [$文件名] ['tmp_name的值']);
    							打破;
    案JPG:
    $图像= @imagecreatefromjpeg($ _ FILES [$文件名] ['tmp_name的值']);
    							打破;
    案JPEG:
    $图像= @imagecreatefromjpeg($ _ FILES [$文件名] ['tmp_name的值']);
    							打破;
    案PNG:
    $图像= @imagecreatefrompng($ _ FILES [$文件名] ['tmp_name的值']);
    							打破;
    }
    @imagecopyresampled($ image_p,$图像,0,$ top_offset,0,0,$ fwidth,$ fheight,$ width_orig,$ height_orig);
    开关($文件类型){
    案GIF:
    如果(!@ imagegif($ image_p,$保存)){
    $ errorList [] =权限被拒绝[GIF];
    }
    							打破;
    案JPG:
    如果(!@ imagejpeg($ image_p,$保存,100)){
    $ errorList [] =权限被拒绝[JPG];
    }
    							打破;
    案JPEG:
    如果(!@ imagejpeg($ image_p,$保存,100)){
    $ errorList [] =权限被拒绝[JPEG];
    }
    							打破;
    案PNG:
    如果(!@ imagepng($ image_p,$保存,0)){
    $ errorList [] =权限被拒绝[PNG];
    }
    							打破;
    }
    @imagedestroy($文件名);
    					}其他{
    $ errorList [] =不能使图像已存在;
    }
    }
    }
    }
    	}其他{
    $ errorList [] =NO文件中选择;
    }
    如果(!$匹配){
    $ errorList [] =文件类型是不允许的:$文件名;
    }
    如果(的sizeof($ errorList)== 0){
    返回$ FULLPATH $ newfilename。
    	}其他{
    $ eMessage =阵列();
    为($ x = 0; $ X<的sizeof($ errorList); $ X ++){
    $ eMessage [] = $ errorList [$ X]
    }
    返回$ eMessage;
    }
    }

    $文件名=用strip_tags($ _ REQUEST ['名']);
    $ MAXSIZE =用strip_tags($ _ REQUEST ['MAXSIZE']);
    $ maxW =用strip_tags($ _ REQUEST ['maxW']);
    $ FULLPATH =用strip_tags($ _ REQUEST ['FULLPATH']);
    $ relPath =用strip_tags($ _ REQUEST ['relPath']);
    $ colorR =用strip_tags($ _ REQUEST ['colorR']);
    $ colorG =用strip_tags($ _ REQUEST ['colorG']);
    $ colorB =用strip_tags($ _ REQUEST ['colorB']);
    $ maxH =用strip_tags($ _ REQUEST ['maxH']);
    $ filesize_image = $ _FILES [$文件名] ['大小'];
    如果($ filesize_image大于0){
    $ upload_image = uploadImage($文件名,$ MAXSIZE,$ maxW,$ FULLPATH,$ relPath,$ colorR,$ colorG,$ colorB,$ maxH);
    如果(is_array($ upload_image)){
    的foreach($ upload_image为$关键=> $值){
    如果($价值==-ERROR-){
    取消设置($ upload_image [$关键]);
    }
    }
    $文件= array_values​​($ upload_image);
    为($ x = 0; $ X<的sizeof($文件); $ X ++){
    $ errorList [] = $文件[$ X]
    }
    $ imgUploaded = FALSE;
    	}其他{
    $ imgUploaded = TRUE;
    }
    }其他{
    $ imgUploaded = FALSE;
    $ errorList [] =文件大小空;
    }
?>
< PHP
    如果($ imgUploaded){
    回声'< IMG SRC =../图像/ success.gifWIDTH =16高度=16的边界=0的风格=马林底:-4px; />成功和LT; BR!/>< IMG SRC ='。$ upload_image。'边界=0/>';
    }其他{
    回声'< IMG SRC =../图像/ error.gifWIDTH =16高度=16px的边界=0的风格=马林底:-3px; />错误(第)发现:';
    的foreach($ errorList为$值){
        回声$价值','。
    }
    }
?>
 
欧冠 尤文1 2阿贾克斯

解决方案

请确保您的上传目录中的文件权限被设置为777,并在正确的组。在Linux中,这是很容易与做

 搭配chmod -R 777 /路径/到/上传
 

和检查他们的权限是已经,只需拨打这个

  LS -al
 

在上面上传目录。

大多数403禁止的是由权限问题引起的。希望这有助于。

HI all,

I am currently tinkering with this pre-authored ajax/php image uploading script, but after almost 2 days of trying to figure out why it throws 403 forbidden error(You don't have permission to access /ajaxupload.php on this server), I am out of options but to ask the gurus here.

I suspect it has something to do with my hosts server settings, but before I hassle them(takes a day usually for them to get back with answers), I thought I might double check with you guys, in case I am missing something because I am new to using ajax, and i suspect that this is where the script is faulting.

Thanks to anyone who can suggest what I am doing wrong.

Cheers, Lea.

HTML: upload form:

<form action="http://www.mysite.com/ajaxupload.php" method="post" name="sleeker" id="sleeker" enctype="multipart/form-data">
    <input type="hidden" name="maxSize" value="9999999999" />
    <input type="hidden" name="maxW" value="200" />
    <input type="hidden" name="fullPath" value="http://mysite.com/uploads/" />
    <input type="hidden" name="relPath" value="../uploads/" />
    <input type="hidden" name="colorR" value="255" />
    <input type="hidden" name="colorG" value="255" />
    <input type="hidden" name="colorB" value="255" />
    <input type="hidden" name="maxH" value="300" />
    <input type="hidden" name="filename" value="filename" />
    <p><input type="file" name="filename" onchange="ajaxUpload(this.form,'http://mysite.com/uploader.php?filename=name&amp;maxSize=9999999999&amp;maxW=200&amp;fullPath=http://mysite.com/uploads/&amp;relPath=../uploads/&amp;colorR=255&amp;colorG=255&amp;colorB=255&amp;maxH=300','upload_area','File Uploading Please Wait...&lt;br /&gt;&lt;img src=\'../images/loader_light_blue.gif\' width=\'128\' height=\'15\' border=\'0\' /&gt;','&lt;img src=\'../images/error.gif\' width=\'16\' height=\'16\' border=\'0\' /&gt; Error in Upload, check settings and path info in source code.'); return false;" /></p>
</form>

JS: ajaxupload.js

function $m(theVar){
    return document.getElementById(theVar)
}
function remove(theVar){
    var theParent = theVar.parentNode;
    theParent.removeChild(theVar);
}
function addEvent(obj, evType, fn){
    if(obj.addEventListener)
        obj.addEventListener(evType, fn, true)
    if(obj.attachEvent)
        obj.attachEvent("on"+evType, fn)
}
function removeEvent(obj, type, fn){
    if(obj.detachEvent){
    	obj.detachEvent('on'+type, fn);
    }else{
    	obj.removeEventListener(type, fn, false);
    }
}
function isWebKit(){
    return RegExp(" AppleWebKit/").test(navigator.userAgent);
}
function ajaxUpload(form,url_action,id_element,html_show_loading,html_error_http){
    var detectWebKit = isWebKit();
    form = typeof(form)=="string"?$m(form):form;
    var erro="";
    if(form==null || typeof(form)=="undefined"){
    	erro += "The form of 1st parameter does not exists.\n";
    }else if(form.nodeName.toLowerCase()!="form"){
    	erro += "The form of 1st parameter its not a form.\n";
    }
    if($m(id_element)==null){
    	erro += "The element of 3rd parameter does not exists.\n";
    }
    if(erro.length>0){
    	alert("Error in call ajaxUpload:\n" + erro);
    	return;
    }
    var iframe = document.createElement("iframe");
    iframe.setAttribute("id","ajax-temp");
    iframe.setAttribute("name","ajax-temp");
    iframe.setAttribute("width","0");
    iframe.setAttribute("height","0");
    iframe.setAttribute("border","0");
    iframe.setAttribute("style","width: 0; height: 0; border: none;");
    form.parentNode.appendChild(iframe);
    window.frames['ajax-temp'].name="ajax-temp";
    var doUpload = function(){
    	removeEvent($m('ajax-temp'),"load", doUpload);
    	var cross = "javascript: ";
    	cross += "window.parent.$m('"+id_element+"').innerHTML = document.body.innerHTML; void(0);";
    	$m(id_element).innerHTML = html_error_http;
    	$m('ajax-temp').src = cross;
    	if(detectWebKit){
            remove($m('ajax-temp'));
        }else{
            setTimeout(function(){ remove($m('ajax-temp'))}, 250);
        }
    }
    addEvent($m('ajax-temp'),"load", doUpload);
    form.setAttribute("target","ajax-temp");
    form.setAttribute("action",url_action);
    form.setAttribute("method","post");
    form.setAttribute("enctype","multipart/form-data");
    form.setAttribute("encoding","multipart/form-data");
    if(html_show_loading.length > 0){
    	$m(id_element).innerHTML = html_show_loading;
    }
    form.submit();
}

PHP: ajaxupload.php

<?php
    function uploadImage($fileName, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH = null){
    	$folder = $relPath;
    	$maxlimit = $maxSize;
    	$allowed_ext = "jpg,jpeg,gif,png,bmp";
    	$match = "";
    	$filesize = $_FILES[$fileName]['size'];
    	if($filesize > 0){	
    		$filename = strtolower($_FILES[$fileName]['name']);
    		$filename = preg_replace('/\s/', '_', $filename);
    	   	if($filesize < 1){ 
    			$errorList[] = "File size is empty.";
    		}
    		if($filesize > $maxlimit){ 
    			$errorList[] = "File size is too big.";
    		}
    		if(count($errorList)<1){
    			$file_ext = preg_split("/\./",$filename);
    			$allowed_ext = preg_split("/\,/",$allowed_ext);
    			foreach($allowed_ext as $ext){
    				if($ext==end($file_ext)){
    					$match = "1"; // File is allowed
    					$NUM = time();
    					$front_name = substr($file_ext[0], 0, 15);
    					$newfilename = $front_name."_".$NUM.".".end($file_ext);
    					$filetype = end($file_ext);
    					$save = $folder.$newfilename;
    					if(!file_exists($save)){
    						list($width_orig, $height_orig) = getimagesize($_FILES[$fileName]['tmp_name']);
    						if($maxH == null){
    							if($width_orig < $maxW){
    								$fwidth = $width_orig;
    							}else{
    								$fwidth = $maxW;
    							}
    							$ratio_orig = $width_orig/$height_orig;
    							$fheight = $fwidth/$ratio_orig;

    							$blank_height = $fheight;
    							$top_offset = 0;

    						}else{
    							if($width_orig <= $maxW && $height_orig <= $maxH){
    								$fheight = $height_orig;
    								$fwidth = $width_orig;
    							}else{
    								if($width_orig > $maxW){
    									$ratio = ($width_orig / $maxW);
    									$fwidth = $maxW;
    									$fheight = ($height_orig / $ratio);
    									if($fheight > $maxH){
    										$ratio = ($fheight / $maxH);
    										$fheight = $maxH;
    										$fwidth = ($fwidth / $ratio);
    									}
    								}
    								if($height_orig > $maxH){
    									$ratio = ($height_orig / $maxH);
    									$fheight = $maxH;
    									$fwidth = ($width_orig / $ratio);
    									if($fwidth > $maxW){
    										$ratio = ($fwidth / $maxW);
    										$fwidth = $maxW;
    										$fheight = ($fheight / $ratio);
    									}
    								}
    							}
    							if($fheight == 0 || $fwidth == 0 || $height_orig == 0 || $width_orig == 0){
    								die("FATAL ERROR REPORT ERROR CODE [add-pic-line-67-orig] to <a href='http://www.atwebresults.com'>AT WEB RESULTS</a>");
    							}
    							if($fheight < 45){
    								$blank_height = 45;
    								$top_offset = round(($blank_height - $fheight)/2);
    							}else{
    								$blank_height = $fheight;
    							}
    						}
    						$image_p = imagecreatetruecolor($fwidth, $blank_height);
    						$white = imagecolorallocate($image_p, $colorR, $colorG, $colorB);
    						imagefill($image_p, 0, 0, $white);
    						switch($filetype){
    							case "gif":
    								$image = @imagecreatefromgif($_FILES[$fileName]['tmp_name']);
    							break;
    							case "jpg":
    								$image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']);
    							break;
    							case "jpeg":
    								$image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']);
    							break;
    							case "png":
    								$image = @imagecreatefrompng($_FILES[$fileName]['tmp_name']);
    							break;
    						}
    						@imagecopyresampled($image_p, $image, 0, $top_offset, 0, 0, $fwidth, $fheight, $width_orig, $height_orig);
    						switch($filetype){
    							case "gif":
    								if(!@imagegif($image_p, $save)){
    									$errorList[]= "PERMISSION DENIED [GIF]";
    								}
    							break;
    							case "jpg":
    								if(!@imagejpeg($image_p, $save, 100)){
    									$errorList[]= "PERMISSION DENIED [JPG]";
    								}
    							break;
    							case "jpeg":
    								if(!@imagejpeg($image_p, $save, 100)){
    									$errorList[]= "PERMISSION DENIED [JPEG]";
    								}
    							break;
    							case "png":
    								if(!@imagepng($image_p, $save, 0)){
    									$errorList[]= "PERMISSION DENIED [PNG]";
    								}
    							break;
    						}
    						@imagedestroy($filename);
    					}else{
    						$errorList[]= "CANNOT MAKE IMAGE IT ALREADY EXISTS";
    					}	
    				}
    			}		
    		}
    	}else{
    		$errorList[]= "NO FILE SELECTED";
    	}
    	if(!$match){
    	   	$errorList[]= "File type isn't allowed: $filename";
    	}
    	if(sizeof($errorList) == 0){
    		return $fullPath.$newfilename;
    	}else{
    		$eMessage = array();
    		for ($x=0; $x<sizeof($errorList); $x++){
    			$eMessage[] = $errorList[$x];
    		}
    	   	return $eMessage;
    	}
    }

    $filename = strip_tags($_REQUEST['filename']);
    $maxSize = strip_tags($_REQUEST['maxSize']);
    $maxW = strip_tags($_REQUEST['maxW']);
    $fullPath = strip_tags($_REQUEST['fullPath']);
    $relPath = strip_tags($_REQUEST['relPath']);
    $colorR = strip_tags($_REQUEST['colorR']);
    $colorG = strip_tags($_REQUEST['colorG']);
    $colorB = strip_tags($_REQUEST['colorB']);
    $maxH = strip_tags($_REQUEST['maxH']);
    $filesize_image = $_FILES[$filename]['size'];
    if($filesize_image > 0){
    	$upload_image = uploadImage($filename, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH);
    	if(is_array($upload_image)){
    		foreach($upload_image as $key => $value) {
    			if($value == "-ERROR-") {
    				unset($upload_image[$key]);
    			}
    		}
    		$document = array_values($upload_image);
    		for ($x=0; $x<sizeof($document); $x++){
    			$errorList[] = $document[$x];
    		}
    		$imgUploaded = false;
    	}else{
    		$imgUploaded = true;
    	}
    }else{
    	$imgUploaded = false;
    	$errorList[] = "File Size Empty";
    }
?>
<?php
    if($imgUploaded){
    	echo '<img src="../images/success.gif" width="16" height="16" border="0" style="marin-bottom: -4px;" /> Success!<br /><img src="'.$upload_image.'" border="0" />';
    }else{
    	echo '<img src="../images/error.gif" width="16" height="16px" border="0" style="marin-bottom: -3px;" /> Error(s) Found: ';
    	foreach($errorList as $value){
        		echo $value.', ';
    	}
    }
?>

解决方案

make sure that the file permissions for your upload directory are set to 777 and in the correct group. In Linux this is easily done with

chmod -R 777 /path/to/uploads

and to check what their permissions are already, just call this

ls -al

in the directory above uploads.

Most 403 Forbidden's are caused by permissions issues. Hope this helps.

 
精彩推荐
图片推荐