发出ajax发布请求时出现403禁止错误

Wan*_*Dan 0 javascript php ajax xmlhttprequest

我的代码在localhost(垃圾服务器)上运行良好,但是将其移至共享主机后,出现错误403(禁止)。我首先尝试了这个:

    $.post('login.php?login', { user_email: user_email, user_password: user_password, user_remember: user_remember }, function(data)
    {
     // Some code here
    }
Run Code Online (Sandbox Code Playgroud)

然后我尝试了这个:

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);
Run Code Online (Sandbox Code Playgroud)

但我仍然收到此错误:

POST http://domain_name/login.php?login 403(禁止)

知道怎么了吗?

jhi*_*man 5

这里有几种可能性。

  1. 共享主机上的403通常表示您尝试联系的文件存在权限问题。基本上,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,然后从那里进行尝试。