网络请求自定义header导致跨域问题

我记得我的项目之前已经解决了跨域问题。

后来在功能开发着,需要添加一个自定义的header,发现又出现跨域报错。

于是又开始一通摸索折腾。

我的项目前面端是用axios网络请求,通过拦截器添加header,代码如下:


//添加请求拦截器
instance.interceptors.request.use(config => {

    const ss = useTokenStore();

    const cc = useCompanyCodeStore();

    
 
    if(ss.token){
            //pinia中定义的ref数据不需要.value
            config.headers['Authorization'] = ss.token;
    } else{
        console.info("登录接口,不需要token")
    }

    if(cc.company_code){
        config.headers['Code'] = cc.company_code;
    }

    return config;
}, error => {
  return Promise.reject(error);
});

一直报跨域问题!!!!!

我后端用的ThinkPhp,网上搜索了各种解决跨域的配置,折腾了好久。最后这样解决了:

1.在自己的项目里创建一个中间件文件MyCrossDomain.php 

2.创建一个中间件配置文件,只要配置了中间件,Thinkphp5.1以上的版本中Controller里不用显示调用,系统默认会使用它。

我的目录结构是这样的:

MyCrossDomain.php文件  在这里我添加了自己需要的header: “Code"

<?php
namespace app\admin\middleware;

use Closure;
use think\Config;
use think\Request;
use think\Response;

/**
 * 跨域请求支持
 */
class MyCrossDomain
{
    protected $cookieDomain;

    protected $header = [
        'Access-Control-Allow-Credentials' => 'true',
        'Access-Control-Max-Age'           => 1800,
        'Access-Control-Allow-Methods'     => 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
        'Access-Control-Allow-Headers'     => 'Authorization, Code,Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With',
    ];

    public function __construct(Config $config)
    {
        $this->cookieDomain = $config->get('cookie.domain', '');
    }

    /**
     * 允许跨域请求
     * @access public
     * @param Request $request
     * @param Closure $next
     * @param array   $header
     * @return Response
     */
    public function handle(Request $request, Closure $next, array $header = []): Response
    {
        $header = !empty($header) ? array_merge($this->header, $header) : $this->header;

        if (!isset($header['Access-Control-Allow-Origin'])) {
            $origin = $request->header('origin');

            if ($origin && ('' == $this->cookieDomain || str_contains($origin, $this->cookieDomain))) {
                $header['Access-Control-Allow-Origin'] = $origin;
            } else {
                $header['Access-Control-Allow-Origin'] = '*';
            }
        }

        return $next($request)->header($header);
    }
}

middleware.php文件

<?php

//admin 项目 配置中间件
use app\admin\middleware\MyCrossDomain;

return [
     MyCrossDomain::class
]; 

在经历了无数次失败后,终于看到了200返回响应。并且在header中看到了自己添加的Code

至此困扰我两天的添加自定义header引起的跨域问题得以解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904478.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode344. Reverse String

Write a function that reverses a string. The input string is given as an array of characters s. You must do this by modifying the input array in-place with O(1) extra memory. Example 1: Input: s [“h”,“e”,“l”,“l”,“o”] Output: [“o”,“l”,“l”…

郎酒不做酱香“凤尾”,白酒首富汪俊林要做兼香“鸡头”

前两天&#xff0c;《2024胡润百富榜》发布&#xff0c;郎酒集团董事长汪俊林以590亿元财富位列榜单第65位&#xff0c;虽仍是白酒行业首富&#xff0c;但排名较去年下降18位&#xff0c;财富缩水17%。 个人财富的缩水&#xff0c;或许和身后郎酒的困境息息相关。发展40年来&am…

【力扣】[Java版] 刷题笔记-104. 二叉树的最大深度

题目&#xff1a;104. 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 解题思路 有关二叉树的题&#xff0c;最先想到的就是利用递归方法遍历。 解题过程 分别计算左右子树的最大…

HCIP-HarmonyOS Application Developer 习题(十七)

&#xff08;判断&#xff09;1、对于用户创建的一些临时卡片在遇到卡片服务框架死亡重启&#xff0c;此时临时卡片数据在卡片管理服务中已经删除&#xff0c;且对应的卡片ID不会通知到提供方&#xff0c;所以卡片使用方需要自己负责清理长时间未刚除的临时卡片数据。 答案&…

2024下半年软考全国计算机软考高级考试,带你一文读懂软考!

一、软考是什么&#xff1f; 全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;简称“软考”&#xff0c;分为初级、中级、高级三个级别&#xff0c;国家级考试&#xff0c;证书含金量很高。 作为IT人&#xff0c;有哪些科目可以报考? 可参考202…

Vue3 学习笔记(十三)Vue组件详解

1、组件&#xff08;Component&#xff09; 介绍 组件&#xff08;Component&#xff09;是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素&#xff0c;封装可重用的代码&#xff0c;可以帮助你将用户界面拆分成独立和可复用的部分。 每个 Vue 组件都是一个独立的 Vue 实…

快速入门kotlin编程(精简但全面版)

注&#xff1a;本文章为个人学习记录&#xff0c;如有错误&#xff0c;欢迎留言指正。 目录 1. 变量 1.1 变量声明 1.2 数据类型 2. 函数 3. 判断语句 3.1 if 3.2 when语句 4. 循环语句 4.1 while 4.2 for-in 5. 类和对象 5.1 类的创建和对象的初始化 5.2 继承 5…

性能之光 年度电竞性能旗舰iQOO 13发布

2024年10月30日&#xff0c;被定义为“性能之光”的年度电竞性能旗舰——iQOO 13正式发布&#xff0c;售价3999元起。iQOO 13作为iQOO 品牌在性能上的又一次深入探索&#xff0c;它像是一束光&#xff0c;引领行业不断拉高性能上限&#xff0c;让用户看到更多的可能性。 iQOO …

ubuntu内核更新导致显卡驱动掉的解决办法

方法1&#xff0c;DKMS指定内核版本 用第一个就行 1&#xff0c;借鉴别人博客解决方法 2&#xff0c;借鉴别人博客解决方法 方法2&#xff0c;删除多于内核的方法 系统版本&#xff1a;ubuntu20.24 这个方法是下下策&#xff0c;如果重装驱动还是不行&#xff0c;就删内核在…

端到端拥塞控制的公平性和稳定性

昨天早上环城河跑步时的两个思考&#xff0c;发了朋友圈&#xff0c;简单总结成文。 拥塞控制算法公平性度量要重新评估&#xff01;仅以带宽公平性做论断是过时且自私的&#xff0c;在全局视角&#xff0c;平衡和稳定一定以某种表现为乘积 “矩” 来保证&#xff0c;比如力矩…

Vue 组件生命周期(四)

Vue 组件生命周期 Vue3 的组件生命周期可以概括为四个阶段&#xff1a;创建、挂载、更新、销毁。每个阶段都包含了一组钩子函数&#xff0c;用于在不同阶段执行特定的操作。 生命周期各阶段对应以下 Hooks 函数&#xff1a; 一、创建阶段 setup() Vue3 引入的新生命周期函数&am…

idea main 不是模块 导致找不到或无法加载主类

问题 导入一个新项目&#xff0c;然后执行启动类&#xff0c;直接报错&#xff1a; 找不到或无法加载主类。 把编译的删除了&#xff0c;重新处理&#xff0c;也不行。 看了下main和test不是模块 正常的是&#xff1a; 处理&#xff1a; 把项目的 .gradle 和 .idae 目录删了&am…

推荐一款优秀的pdf编辑器:Ashampoo PDF Pro

Ashampoo PDF Pro是管理和编辑 PDF 文档的完整解决方案。程序拥有您创建、转换、编辑和保护文档所需的一切功能。根据需要可以创建特定大小的文档&#xff0c;跨设备可读&#xff0c;还可以保护文件。现在您还能像编辑Word文档一样编辑PDF! 软件特点 轻松处理文字 如 Microso…

在manjaro 2024里使用yay命令安装ROS2

不建议这么安装&#xff0c;研究了两天以失败告终。要不就手动编译吧。。。&#xff08;在系统环境良好的情况下&#xff0c;最好是刚装完系统就装ROS&#xff09;真的太多不适配了&#xff0c;旧有的很多yay包都会遇到一些奇怪的问题&#xff1a; 0.一开始就会遇到网络卡住的…

平台化运营公司如何在创业市场招商

在当今商业环境中&#xff0c;平台化运营的公司正成为推动经济发展的重要力量。对于这类公司而言&#xff0c;在创业市场招商意义重大。 平台化运营公司具有独特特点&#xff1a;通过搭建开放共享平台连接供需双方&#xff0c;实现资源优化配置与价值创造。比如电子商务平台、社…

mybatis数据映射(记录踩坑点)

刚开始&#xff0c;userInfo里面的id我默认以为是User表的id&#xff0c;但是后面稍微看了一下返回的数据&#xff0c;userId跟replyId一致&#xff0c;我就知道userInfo里的id指的是Reply的id&#xff08;应该是命名冲突&#xff0c;先查Reply有没有id&#xff0c;没有&#x…

OpenCV基本操作(python开发)——(7)实现图像校正

OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;1&#xff09; 读取图像、保存图像 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;2&#xff09;图像色彩操作 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;3&…

【工具使用】VSCode如何将本地项目关联到远程的仓库 (vscode本地新项目与远程仓库建立链接)

在日常练习的项目中&#xff0c;我每次都在vscdoe编写前台代码&#xff0c;但是对于编写的代码&#xff0c;如何将本地项目关联到远程的仓库&#xff1b;这里做一下记录 文章目录 1、Gitee 新建远程仓库2、将本地的项目和远程仓库进行关联**3、将本地修改的代码推送到远程通过命…

语言≠思维,大模型学不了推理:一篇Nature让AI社区炸锅了

转自&#xff1a;机器之心 大语言模型&#xff08;LLM&#xff09;为什么空间智能不足&#xff0c;GPT-4 为什么用语言以外的数据训练&#xff0c;就能变得更聪明&#xff1f;现在这些问题有 「标准答案」了。 近日&#xff0c;一篇麻省理工学院&#xff08;MIT&#xff09;等…

技术星河中的璀璨灯塔 —— 青云交的非凡成长之路

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…