【发布时间】:2016-05-10 21:40:03
【问题描述】:
我正在尝试从 angularjs 到一个虚拟 php 文件做一个简单的 POST,以了解它是如何工作的。 在我的 angularjs 部分:
<html ng-app="loginApp">
<head>
<meta charset="utf-8">
<title>Login</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
<script>
var logindata = {username:'abc', password:'abc'}
var loginApp = angular.module('loginApp', []);
loginApp.controller('loginCtrl', function ($scope, $http){
var request = $http({
method: "POST",
url: "http://different-ip/a.php",
data: logindata,
headers: { 'Content-Type': 'multipart/form-data', 'Authorization': 'Basic ' + btoa(logindata.username + logindata.password),
'Access-Control-Allow-Origin': "*"}
});
request.success(
function( data ) {
$scope.someVariableName = data;
}
);
});
</script>
</head>
<body ng-controller="loginCtrl">
<h2>Angular.js JSON Fetching Example</h2>
<p> {{ someVariableName }} </p>
</body>
</html>
这是我的 PHP 部分 (a.php),位于 http://different-ip
<?php
header("Access-Control-Request-Method: *");
header("Access-Control-Request-Headers: *");
header("Access-Control-Allow-Origin: *");
file_put_contents("aa.txt", json_decode(file_get_contents('php://input'),true));
file_put_contents("aaa.txt", getallheaders());
?>
当我执行我的 angularjs 文件时,chrome 控制台给了我这个错误:
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
当我尝试使用 Postman 对此 a.php 进行发布时,一切正常。那么为什么 angularjs 不允许呢? 我尝试阅读有关 CORS 的信息,但对于如何解决此问题(代码方面)没有直接的答案。有人可以帮我吗?提前致谢。
【问题讨论】:
-
尝试检查这 2 个关于 angularjs+CORS 的链接:stackoverflow.com/questions/21455045/… 和 stackoverflow.com/questions/27654135/…