我已经设置了一个标准的离子框架(带有“离子启动myapp选项卡”),并且我在另一边有一个laravel php后端(有数据库等等)。
现在我想要的是从我的移动应用程序询问我的后端数据库(它将是一个本机应用程序,由phonegap编译)。看起来CORS有问题需要解决,而且我已经阅读了很多关于如何做到这一点的方法,但没有一个真正奏效。
对我的外部后端服务器进行身份验证(基于令牌)的好方法是什么,然后,一旦经过身份验证,请向服务器API询问各种事情?还有人有一个很好的教程和/或工作示例吗?
答案 0 :(得分:2)
这个教程可以帮助你如何使用带有角度和节点js的令牌系统。使用mysql可以使用数据库。当使用基于令牌的身份验证时,在每个服务器端点都应该有一个有效的令牌。你可以你的可行令牌生成器也喜欢oauth2。
http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543
答案 1 :(得分:1)
要解决CORS问题,请将此php代码添加到php api的头部
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 166400');
}
答案 2 :(得分:0)
我不知道这种反应现在能做些好事。但准确地说,通过以下步骤可以避免CORS。
首先在您的服务器中创建一个单独的php文件,并将其命名为“api.php”(或您喜欢的任何内容)并包含此文件。
<?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);
}
?>
然后在你的其他php文件发送响应给客户端使用
include_once './api.php'; // or the name use above
这样就可以了。