我的代码在localhost(wamp服务器)上工作正常,但在将其移动到共享主机时,我收到错误403(禁止)。 我先试了一下:
$.post('login.php?login', { user_email: user_email, user_password: user_password, user_remember: user_remember }, function(data)
{
// Some code here
}
然后我尝试了这个:
var http = new XMLHttpRequest();
var url = "login.php?login";
var params = "user_email="+user_email+"&user_password="+user_password+"&user_remember="+user_remember;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
// Some code here
}
}
http.send(params);
但我仍然会收到此错误:
POST http://domain_name/login.php?login 403(禁止)
任何想法都错了吗?
答案 0 :(得分:4)
这里有一些可能性。
共享主机上的403 USUALLY意味着您尝试联系的文件存在权限问题。基本上,Web服务器说,"不,我不允许您访问或运行login.php。"您可能需要仔细检查该文件的所有者和权限,以防它以某种方式错误地上传。
还有一个很小的机会,你可能有一个.htaccess文件设置为在某些情况下响应403错误代码,所以如果你有其中一个,请寻找任何讨论允许/拒绝/授权,然后尝试评论这些行(暂时,只是为了查看它是否是原因)并尝试再次访问login.php。
下一种可能性是你的login.php本身被编写为在某些情况下响应403错误代码。例如,如果您没有向其发送适当的数据,或者由于某种原因它无法验证您的登录信息,也许它会响应403 HTTP状态代码。在那种情况下,我要仔细检查以确保发送到login.php的数据是有效的,并且在共享服务器上正确设置了login.php(例如,检查数据库访问等)
最终的可能性是您的原始文件与login.php不在同一个域中。换句话说,您正在http://domainA.com/page.html并对http://domainB.com/login.php进行AJAX调用。这被称为跨域调用,也可能导致403,因为出于安全原因禁止跨域调用,除非您采取措施启用它们(您通常必须控制双方才能执行这些步骤)。因此,如果您正在执行AJAX调用,请尝试将原始文件(page.html)复制到login.php所在的domainB.com,然后从那里进行尝试。