【发布时间】:2018-11-08 09:25:19
【问题描述】:
我关注了this post,但它只适用于 GET 方法(正如您在 cmets 中提到的那样)。我还安装了this pakage,但它只适用于 GET 方法。这是我得到的错误:
请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin my origin 因此不允许访问。响应的 HTTP 状态代码为 403。
PHP 版本:7.1
Laravel 版本:5.6
前端应用程序:Angular 应用程序(我需要在这里更改吗?)
//Cours.php (middleware I created myself using the first method)
class Cors
{
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT,
DELETE, OPTIONS');
}
}
//cors.php (config/cors.php second method using the laravel-cors package)
return [
'supportsCredentials' => false,
'allowedOrigins' => ['*'],
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['*'],
'allowedMethods' => ['*'],
'exposedHeaders' => [],
'maxAge' => 0,
];
//kernel.php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
\Barryvdh\Cors\HandleCors::class,
];
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'cors' => \App\Http\Middleware\Cors::class,
];
}
【问题讨论】:
-
安装此包链接“github.com/barryvdh/laravel-cors”并通过clear config, route重新运行项目。
-
我提到了我已经在问题中测试过这个包的事实。但我得到了同样的错误。
-
让我们再做一件事。而不是添加 * 到 origin 添加你的 laravel 应用程序的 url。我希望你清除你的 laravel 项目的缓存、路由和配置
-
我遇到了同样的错误
-
我也设置了具有相同要求的项目。第一次它给我错误,但重新运行后它可以工作。无论如何,您能否用 kernel.php 和 cors.php(config file) 更新您的问题