首页  >  问答  >  正文

vue.js - laravel axios跨域请求的cookie问题

在Laravel下创建了子域名路由api.service.dev,认证我是用的passport,启用了CreateFreshApiToken

service.dev这个域名下可以正常获取laravel_token,并请求但是请求https://api.service.dev/user 时提示401 Unauthenticated。

查看请求头中没有携带CreateFreshApiToken创建的laravel_token 这个cookie

请问大神怎么解决?

仅有的幸福仅有的幸福2685 天前2611

全部回复(2)我来回复

  • 世界只因有你

    世界只因有你2017-05-16 16:49:15

    1、安装barryvdh/laravel-cors

    安装方法请移步https://github.com/barryvdh/l...

    2、配置cors.php

    return [
        /*
         |--------------------------------------------------------------------------
         | Laravel CORS
         |--------------------------------------------------------------------------
         |
         | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
         | to accept any value.
         |
         */
        'supportsCredentials' => true,
        'allowedOrigins' => ['*'],
        'allowedHeaders' => ['*'],
        'allowedMethods' => ['*'],
        'exposedHeaders' => [],
        'maxAge' => 0,
    ];

    3、配置session的domain

    在.env文件中添加SESSION_DOMAIN=.xxx.com,我这里是service.dev,所以应该填写.service.dev,这样所有service.dev的子域名都能共享Cookie

    4、最后配置前端的请求

    bootstrap.js中加入如下代码

    window.axios.defaults.withCredentials = true;

    这样就能正常访问跨域api了!!!

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 16:49:15

    axios配置了withCredentials = true后在chrome下没问题。
    但IE下还需要服务器端配置P3P的响应头。。。IE就是这么有个性

    回复
    0
  • 取消回复