【已解决】Webman + Vue 跨域后 Session 不能访问

fgt1t5y

解决方案

在前端使用的 HTTP 库(比如 Axios)配置跨域

import axios from 'axios';
axios.defaults.withCredentials = true;

问题描述

开发前后端分离 App,在 Webman 设置了跨域,但从前端访问接口时使用session api取不到数据,返回 NULL。

报错信息

跨域中间件

class Access implements MiddlewareInterface
{
    public function process(Request $request, callable $handle): Response
    {
        if ($request->controller == 'app\controller\XController') {
            $response = $handle($request);
            $response->withHeaders([
                'Access-Control-Allow-Origin' =>            '*',
                'Access-Control-Allow-Credentials' =>       'true',
                'Content-Type' =>      'application/json;charset=UTF-8',
                'Access-Control-Allow-Methods' =>           'GET,POST',
                'Access-Control-Allow-Headers' =>           '*'
            ]);
            return $response;
        } else {
            return $handle($request);
        }
    }
}

前端要调用的登出 API

public function logout(Request $request)
    {
        $session = $request->session(); 
        $uid = $session->get('uid');        // 取回 NULL
        Token::where('uid', $uid)->delete();
        $session->flush();
        return json(['code' => 0, 'msg' => '完成。']);
    }

截图报错信息里报错文件相关代码

截图

截图

操作系统及workerman/webman等框架组件具体版本

OS: Windows 11 21H2
Webman: 1.5.0
Workerman: 4.1.10

693 2 0
2个回答

排骨苏

前端配置好,后端不用动

  • 暂无评论
🔝