我正在使用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。我在這裏錯過了什麼?
不幸的是,沒有解決我的問題。 – MatMat
也許我可能是錯的,但最有可能的問題是,當你試圖做一個服務器調用時,你的瀏覽器正在做一個預檢的OPTIONS請求,這個請求被拒絕了(不知道GET是否是prflight)。這個問題可能與服務器拒絕的請求/響應頭部有關。希望這個信息可能有幫助 –
我回答了我自己的問題。這是由於我的htaccess文件中的選項FollowSymLinks – MatMat