下面由laravel框架教程栏目给大家介绍laravel api允许跨域访问,希望对需要的朋友有所帮助!
服务器a请求服务器b的接口,那么一般会出现跨域问题。全解跨域请求处理办法
xmlhttprequest cannot load http://api.console.vms3.com/api/user. no 'access-control-allow-origin' header is present on the requested resource. origin 'http://localhost:8080' istherefore not allowed access.意思就是服务器响应不允许跨域访问.
那我们就需要让服务器支持跨域访问, 也就是在响应头部中添加
"'access-control-allow-origin: *'
"
第一步: 创建中间件
创建 `app/http/middleware/accesscontrolalloworigin.php` middleware 把 'access-control-allow-origin: *' 写入头部.app/http/middleware/accesscontrolalloworigin.php<?phpnamespace app\\\\http\\\\middleware;use closure;use illuminate\\\\support\\\\facades\\\\auth;class accesscontrolalloworigin{ / * * handle an incoming request. * * @param \\\\illuminate\\\\http\\\\request $request * @param \\\\closure $next * @return mixed */ public function handle($request, closure $next) { header('access-control-allow-origin: *'); header("access-control-allow-credentials: true"); header("access-control-allow-methods: *"); header("access-control-allow-headers: content-type,access-token"); header("access-control-expose-headers: *"); return $next($request); }}第二步: 注册路由
注册这个 middleware 到 kernel 中.
分别在 protected $middleware 数组中和 protected $routemiddleware 数组中
添加我们刚才创建的那个文件class名, 使用 cors 这个别名.
第三步: 设置中间件保护接口
然后在设置它保护 api , 就是$middlewaregroups['api'] 的数组中添加它的别名, 本文中是 'cors'
app/http/kernel.php
<?phpnamespace app\\\\http;use illuminate\\\\foundation\\\\http\\\\kernel 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 = [ \\\\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\\\\accesscontrolalloworigin::class, ]; / * the application's route middleware groups. * * @var array */ 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', 'cors' ], ]; / * the application's route middleware. * * these middleware may be assigned to groups or used inpidually. * * @var array */ protected $routemiddleware = [ 'auth' => \\\\illuminate\\\\auth\\\\middleware\\\\authenticate::class, 'auth.basic' => \\\\illuminate\\\\auth\\\\middleware\\\\authenticatewithbasicauth::class, 'bindings' => \\\\illuminate\\\\routing\\\\middleware\\\\substitutebindings::class, 'can' => \\\\illuminate\\\\auth\\\\middleware\\\\authorize::class, 'guest' => \\\\app\\\\http\\\\middleware\\\\redirectifauthenticated::class, 'throttle' => \\\\illuminate\\\\routing\\\\midd
域名申请注册和首次云服务器划算相关的问题公网ip访问云服务器网站服务器和云开发的区别gitlab ssh key如何建企业网站百度云购买的江苏云服务器bcc怎么查询商标无效的原因