2017-09-17 139 views
0

我的代码在localhost(wamp服务器)上正常工作,但在将它移动到共享主机时,出现错误403(禁止)。 我想这第一:403制作ajax时出现禁止的错误发布请求

$.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 (Forbidden)

任何想法什么是错?

回答

3

这里有几种可能性。

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

  2. 还有一个很小的机会,你可能有一个.htaccess文件,它被设置为在某些情况下响应403错误代码,所以如果你有其中一个,寻找任何谈论允许/拒绝/ grant,然后尝试注释掉这些行(暂时,只是为了查看是否是原因),并尝试再次访问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,然后从中尝试。