2017-09-17 169 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,然後從中嘗試。