我正在开发一个Ionic Mobile App,它通过REST API连接到Laravel中的服务器。我使用了Laravel护照包并配置了一些关于授权令牌如何在API上工作的东西。所以我在Ionic应用程序的提供程序上编写了一些代码,我为移动用户提供了这个登录功能,通过API从服务器登录,但它一直告诉我这个错误:
状态代码:403 Forbidden
这似乎是服务器端错误,我没有权限访问此资源。正确?
因此,服务器理解来自Ionic端的请求,但拒绝服务器或禁止服务器。
我使用CORS Allow-Control-Origin将Ionic应用程序连接到Laravel。
但是,当我尝试使用POSTMAN执行POST请求时,Laravel护照包提供了所有授权类型和客户端密钥,它成功地通过oauth为我提供了令牌类型的承载,访问令牌和刷新令牌。
以下是我的中间件Cors中的代码
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
}
}
这是我的api路线中的代码:
<?php
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:api', 'cors')->get('/user', function (Request $request) {
return $request->user();
});
Route::resource('departments', 'DepartmentAPIController');
Route::resource('users', 'UserAPIController');
Route::get('users/{username}', 'UserAPIController@getAccount');
Route::resource('inspection_checklists', 'InspectionChecklistsAPIController');
顺便说一下,我正在使用User API Controller中的getAccount函数。
感谢有人可以提供帮助。 提前谢谢。
答案 0 :(得分:1)
与CORS无关。 如护照文件所述:
JSON API受
web
和auth
中间件保护;因此,只能从您自己的应用程序中调用它。无法从外部源调用它。 这意味着您必须登录才能使用这些路由。