您好,欢迎访问一九零五行业门户网

详解Laravel API允许跨域访问

下面由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\middleware\throttlerequests::class,        'cors' => \app\http\middleware\accesscontrolalloworigin::class,    ];}
第四步:在路由中添加路由route::middleware('cors')->group(function () {    //});
以上就是详解laravel api允许跨域访问的详细内容。
其它类似信息

推荐信息