【发布时间】:2021-10-11 19:46:58
【问题描述】:
我在 example.domain.com 中上传了我的 Laravel 项目,在另一个子域 subdomain.domain.com 中上传了 angular 项目,但在登录系统时遇到了 CORS 策略问题。
login.service.ts.
readonly baseURL = 'https://www.example.domain.com/api';
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*'
})
}
login(data:any){
return this.http.post(this.baseURL + '/auth/login/', data ,this.httpOptions);
}
api.php
Route::group([
'middleware' => 'api',
'prefix' => 'auth'
], function ($router) {
Route::post('/login', [AuthController::class, 'login']);
});
AuthController.php
public function login(Request $request){
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required|string|min:6',
]);
// return response()->json($validator, 200);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
if (! $token = Auth::attempt($validator->validated())) {
return response()->json(['error' => 'Either email or password is wrong.'], 401);
}
return $this->createNewToken($token);
}
protected function createNewToken($token){
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth()->factory()->getTTL() * 60,
'user' => auth()->user()
]);
}
【问题讨论】:
-
/api需要添加到baseUrl。见:config/cros.php。 ` baseURL = 'example.domain.com/api/SOME';` -
我添加了,但还是不行。
-
试试这个:制作新的中间件并遵循此代码
return $next($request)->header('Access-Control-Allow-Origin', '*')->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')->header('Access-Control-Allow-Headers' , '*');
标签: php laravel cors angular11