2017-04-24 93 views
0

我正在使用AngularJS作爲我的網站。我不想使用PHP向我的mysql數據庫發出GET請求。我創建了一個簡單的PHP腳本Angularjs - 從自己的服務器請求PHP腳本返回403

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

$conn = new mysqli($server, $username, $password, $database); 

mysqli_set_charset($conn, "utf8"); 
$result = $conn->query("SELECT name FROM table"); 

$outp = ""; 
while($rs = $result->fetch_array(MYSQLI_ASSOC)) { 
    if ($outp != "") { 
     $outp .= ","; 
    } 
    $outp .= '{"name":"' . $rs["name"] . '",'; 
}  
$outp ='{"records":['.$outp.']}'; 
$conn->close(); 

echo($outp); 
?> 

當我請求這個PHP文件與angularJs http.get的答覆是403禁止。我的AngularJS代碼:

getScript: function() { 
     var req = { 
      method: 'GET', 
      url: '/app/scripts/script.php', 
      headers: { 
       'Content-Type': 'application/json' 
      } 
     }; 
     return $http(req); 
    } 

正如你所看到的,即使它來自同一臺服務器,也能得到403。我在這裏錯過了什麼?

回答

0

好吧我想通了。由於這行在我的.htaccess文件中得到403:

Options FollowSymLinks 
0
getScript: function() { 
    var req = { 
     method: 'GET', 
     url: '/app/scripts/script.php', 
    }; 
    return $http(req); 
} 

儘量不要自定義請求標頭。這應該解決403禁止問題。

+0

不幸的是,沒有解決我的問題。 – MatMat

+0

也許我可能是錯的,但最有可能的問題是,當你試圖做一個服務器調用時,你的瀏覽器正在做一個預檢的OPTIONS請求,這個請求被拒絕了(不知道GET是否是prflight)。這個問題可能與服務器拒絕的請求/響應頭部有關。希望這個信息可能有幫助 –

+1

我回答了我自己的問題。這是由於我的htaccess文件中的選項FollowSymLinks – MatMat

相關問題