403发出ajax Post请求时出现Forbidden错误

时间:2017-09-17 01:08:57

标签: javascript php ajax xmlhttprequest

我的代码在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(禁止)

任何想法都错了吗?

1 个答案:

答案 0 :(得分:4)

这里有一些可能性。

  1. 共享主机上的403 USUALLY意味着您尝试联系的文件存在权限问题。基本上,Web服务器说,"不,我不允许您访问或运行login.php。"您可能需要仔细检查该文件的所有者和权限,以防它以某种方式错误地上传。

  2. 还有一个很小的机会,你可能有一个.htaccess文件设置为在某些情况下响应403错误代码,所以如果你有其中一个,请寻找任何讨论允许/拒绝/授权,然后尝试评论这些行(暂时,只是为了查看它是否是原因)并尝试再次访问login.php。

  3. 下一种可能性是你的login.php本身被编写为在某些情况下响应403错误代码。例如,如果您没有向其发送适当的数据,或者由于某种原因它无法验证您的登录信息,也许它会响应403 HTTP状态代码。在那种情况下,我要仔细检查以确保发送到login.php的数据是有效的,并且在共享服务器上正确设置了login.php(例如,检查数据库访问等)

  4. 最终的可能性是您的原始文件与login.php不在同一个域中。换句话说,您正在http://domainA.com/page.html并对http://domainB.com/login.php进行AJAX调用。这被称为跨域调用,也可能导致403,因为出于安全原因禁止跨域调用,除非您采取措施启用它们(您通常必须控制双方才能执行这些步骤)。因此,如果您正在执行AJAX调用,请尝试将原始文件(page.html)复制到login.php所在的domainB.com,然后从那里进行尝试。