一般在在mvvm的开发模式下,都是向后端请求接口,在没有打包放到同域下,而是在开发的环境下,像vue-cli都是开一个端口服务,因此在开发环境下,后端都要设置允许跨域(cros)
如何使用laravel做后端时,设置允许跨域呢?
1.写一个中间件,返回一个响应头
AllowAcross.php
<?php
namespace App\Http\Middleware;
use Closure;
//laravel的中间件
//就是说在仿问一个路由时要经过此代码进行处理
class AllowAcross
{
/**
* Run the request filter.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request,Closure $next)
{
header("Access-Control-Allow-Origin: *");
$headers = [
'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin'
];
$response = $next($request);
foreach($headers as $key => $value)
$response->header($key, $value);
return $response;
}
}
2.在kernel.php中注册
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
//在这里
\App\Http\Middleware\AllowAcross::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
// \App\Http\Middleware\VerifyCsrfToken::class,
];
/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
//自定义非全局中间件
//用来判段是否登录
'check' => \App\Http\Middleware\CheckLogin::class,
'AdminCheck' => \App\Http\Middleware\CheckAdminLogin::class
];
}