Laravel + Vue/axios Api 调用子域 access-control-allow-origin

Posted

技术标签:

【中文标题】Laravel + Vue/axios Api 调用子域 access-control-allow-origin【英文标题】:Laravel + Vue/axios Api call to subdomain access-control-allow-origin 【发布时间】:2019-02-15 18:18:18 【问题描述】:

我知道有很多关于这类东西的信息。但是我确实对很多事情感到有些困惑。首先。如果我在 api.example.com 上有一个 laravel API,在 www.example.com 上有我的 Vue 项目

所以我从 www.example.comapi.example.com 进行 API 调用。那么我应该在哪里处理这个错误呢?我已经将标题添加到我的 Axios 配置中,如下所示:

axios.defaults.headers.common = 
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Credentials": "true"
;

经过一些阅读,我了解到您必须处理此服务器端。所以我尝试安装

composer require barryvdh/laravel-cors

但它给了我这个:

“优化”命令未定义。

所以,也许我的作曲家或图书馆 idk 有问题。但在我浪费另外几个小时之前。我想询问更多有关应用程序要求的信息,甚至可能是如何解决此问题。

【问题讨论】:

【参考方案1】:

您已经在 api 客户端中设置了访问控制,您必须将其放入服务器中,这意味着在 laravel 中。

您的服务器将决定为谁服务。不是您的客户会决定他们应该使用 VueJS 的天气。

在 laravel 中添加 cors 中间件

<?php 

namespace App\Http\Middleware;

use Closure;

class CorsMiddleware

    public function handle($request, Closure $next)
    
        return $next($request)
            ->header('Access-Control-Allow-Origin', '*')
            ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    

你可以走了。

【讨论】:

创建这个中间件,然后把这个中间件添加到我所有的路由中? @NielsLucas 添加到您想用作 api 服务的所有路由。 @NielsLucas 会通过测试告诉你。我还没有测试过。对不起

以上是关于Laravel + Vue/axios Api 调用子域 access-control-allow-origin的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Vue Axios 未定义

验证并保存一组对象 laravel 6、vue、axios

从控制器读取 json 响应到 Axios Catch 部分 - Laravel Vue Axios

Axios 中的 Cors OPTIONS 方法在 Laravel 和 Nginx 中失败

Laravel 和 vue axios get 方法返回 Getters & Setters?

如何使用 vue axios 在 laravel 中解决 401 未授权响应