在Azure上使用PHP发布方法
我直接从其他地方复制并粘贴了这段代码,效果非常好。我刚刚上传到azure上自己的服务器上,没有收到任何响应,但肯定有一个请求。我不知道当它是完全相同的代码时,它是如何不响应的!有什么想法吗在Azure上使用PHP发布方法,php,angularjs,http,azure,post,Php,Angularjs,Http,Azure,Post,我直接从其他地方复制并粘贴了这段代码,效果非常好。我刚刚上传到azure上自己的服务器上,没有收到任何响应,但肯定有一个请求。我不知道当它是完全相同的代码时,它是如何不响应的!有什么想法吗 <?php if (isset($_SERVER['HTTP_ORIGIN'])) { header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); header('Access-Control-Allow-Crede
<?php
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
$postdata = file_get_contents("php://input");
if (isset($postdata)) {
$request = json_decode($postdata);
$username = $request->username;
if ($username != "") {
echo "Server returns: " . $username;
}
else {
echo "Empty username parameter!";
}
}
else {
echo "Not called properly with username parameter!";
}
?>
默认情况下,在PHP中创建Azure Web App服务时,PHP运行时中没有名为HTTP\u ORIGIN
的变量,变量REQUEST\u METHOD
仅设置为“GET
”。您可以编写代码phpinfo()
在Azure上的PHP脚本中检查Azure上PHP运行时中的配置
因此前2个IF
闭包中的代码永远不会运行。因此,如果您的AngularJs客户端与您的PHP服务器不在同一个域中(它们应该在这里的一个Azure Web App服务中),当您的客户端请求PHP服务器时,它将引发CORS问题
因此,您可以在Azure portal上设置自定义HTTP_ORIGIN
应用程序内设置,该设置将在应用程序启动时的PHP运行时中设置
- 登录,标题到页面以管理您的网站
- 单击配置选项卡,向下滚动至应用程序设置部分
- 为AngularJs客户端端点设置HTTP_原点。例如,如果您的AngularJs客户端在本地运行,则应将
HTTP\U源
设置为localhost
:
- 单击底部导航的“保存”按钮,然后单击“重新启动”按钮以重新启动网站以加载自定义设置
然后,您可以在本地服务器上测试AngularJs应用程序:
$http({
url: 'http://<your_web_site_na,e>.azurewebsites.net/<post_page>.php',
method: "POST",
data: { username: 'username', password: 'password' },
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.success(function (data, status, headers, config) {
console.log(data);
})
.error(function (data, status, headers, config) {
$scope.status = status;
});
$http({
网址:'http://.azurewebsites.net/.php',
方法:“张贴”,
数据:{username:'username',password:'password'},
标题:{'Content-Type':'application/x-www-form-urlencoded'}
})
.success(函数(数据、状态、标题、配置){
控制台日志(数据);
})
.error(函数(数据、状态、标题、配置){
$scope.status=状态;
});
请粘贴HTTP请求和响应(如果有)日志-谢谢-和HTTP代码