@survivor2005
Друзья, помогите плз разрешить проблему связанную с CORS защитой.
Делаю веб приложения RESTfull api на laravel и vue. Не могу решить проблему с cors.
Тема заезжанная, но все решения которые нашел в инете не помогают :((
Установил на лару Fruitcake, помогло только на запрос GET, на запрос POST отвечает этим:
Делаю веб приложения RESTfull api на laravel и vue. Не могу решить проблему с cors.
Тема заезжанная, но все решения которые нашел в инете не помогают :((
Установил на лару Fruitcake, помогло только на запрос GET, на запрос POST отвечает этим:
Access to fetch at ‘localhost:8000/api/users/create‘ from origin ‘localhost:8080‘ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.
Конфиг Fruitcake:
return [
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
Запрос:
async sendUserForm () {
const response = await fetch(this.serverAddr + '/api/users/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: this.userForm.name,
email: this.userForm.email,
password: this.userForm.password,
group_id: this.userForm.selectGroup
})
})
Решения вопроса 1
@survivor2005
Всем сорри я просто походу тупанул нужно было зарегистрировать мидлдвер в разделе АПИ, а не в разделе мидлевер. И все зарботало. Прилагаю скрин файла kernel.php. Обратите внимание в каком разделе зарегистрирован Cors.php
<?php
namespace AppHttp;
use IlluminateFoundationHttpKernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// AppHttpMiddlewareTrustHosts::class,
AppHttpMiddlewareTrustProxies::class,
FruitcakeCorsHandleCors::class,
AppHttpMiddlewarePreventRequestsDuringMaintenance::class,
IlluminateFoundationHttpMiddlewareValidatePostSize::class,
AppHttpMiddlewareTrimStrings::class,
IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
// IlluminateSessionMiddlewareAuthenticateSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
],
'api' => [
'throttle:api',
IlluminateRoutingMiddlewareSubstituteBindings::class,
AppHttpMiddlewareCors::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => AppHttpMiddlewareAuthenticate::class,
'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
'can' => IlluminateAuthMiddlewareAuthorize::class,
'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
'password.confirm' => IlluminateAuthMiddlewareRequirePassword::class,
'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
];
}
Комментировать
Ответы на вопрос 0