• react+nextjs配置跨域不生效


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 ᅠᅠᅠᅠᅠ498 2024-03-12 09:24 采纳率: 0% 浏览 6 首页/ 前端 / react+nextjs配置跨域不生效 react.jsjavascript react17+nextjs12+semi-design2.53.2项目中 下载http-proxy-middleware 配置跨域文件setupProxy不生效 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    4条回答 默认 最新

    • 专家-赤兔[在线] 2024-03-12 09:25
      关注

      引自免费微信小程序:皆我百晓生

      针对在React.js(版本17)和Next.js(版本12)项目中使用semi-design(版本2.53.2)时配置跨域不生效的问题,你提到已下载并尝试通过http-proxy-middleware设置setupProxy.js文件进行代理。为确保proxy中间件正确配置,请按照以下步骤检查或更新你的setupProxy.js文件:

      // 在项目根目录下创建或修改 setupProxy.js 文件
      
      const { createProxyMiddleware } = require('http-proxy-middleware');
      
      module.exports = function(app) {
        // 配置目标API服务器的URL和要代理的路径
        const targetUrl = 'http://your-api-server-url.com'; // 替换为目标API地址
        const apiProxyPath = '/api'; // 这是你希望拦截并转发到目标服务器的请求路径前缀
      
        app.use(apiProxyPath, 
          createProxyMiddleware({
            target: targetUrl,
            changeOrigin: true, // 允许跨域
            pathRewrite: {
              '^' + apiProxyPath: '' // 移除请求路径中的/api前缀
            },
            secure: false // 如果API服务器是HTTP而不是HTTPS,需要设置此项为false
          })
        );
      };
      

      确保上述代码在项目的根目录下的setupProxy.js文件内,并且该文件会被Next.js自动识别和加载。

      如果你的目标API接口与上面的示例不同,请相应地调整targetUrlapiProxyPath。同时,请确保在前端代码中发起API请求时,请求路径是以配置的apiProxyPath作为前缀的。

      如果问题依然存在,请检查以下可能原因:

      1. 确保setupProxy.js文件被正确引用和执行,Next.js在开发环境下会自动处理此文件。
      2. 检查前端应用发送请求时的URL是否符合预期,即包含/api这样的前缀。
      3. 如果目标API服务器有CORS限制,请确保API服务器端允许来自你前端应用的域名或端口访问。

      若以上方案仍无法解决,请提供更多关于请求失败的具体错误信息以及API服务器的CORS设置情况。

      展开全部

      评论 编辑记录
      ᅠᅠᅠᅠᅠ498 2024-03-12 10:10

      不行啊老师 不生效呢

      回复
      ᅠᅠᅠᅠᅠ498 2024-03-12 10:10

      我是用axios请求的

      回复
      ᅠᅠᅠᅠᅠ498 2024-03-12 10:13

      img

      回复
    • 檀越剑指大厂 Java领域优质创作者 2024-03-12 09:25
      关注

      ᅠᅠᅠᅠᅠ498 上午好☀️☀️☀️️
      本答案参考ChatGPT-3.5

      根据你提供的代码,我注意到你尝试使用http-proxy-middleware来配置跨域代理,但是在setupProxy.js文件中的配置似乎不起作用。 以下是几个可能解决该问题的方案:

      1. 检查setupProxy.js的路径和命名

        • 确保setupProxy.js文件位于项目根目录下,并且命名为setupProxy.js
        • 检查是否有其他类似的文件正在冲突,比如setupProxy.ts或者其他相关命名的文件
      2. 验证是否正确安装了http-proxy-middleware

        • 确保你已经在项目中安装了http-proxy-middleware依赖
        • 在项目根目录的命令行终端中输入npm install http-proxy-middleware来安装依赖
      3. 查看createProxyMiddleware的导入方式

        • 确保你的导入方式是正确的,在setupProxy.js文件中使用require('http-proxy-middleware')或者import { createProxyMiddleware } from 'http-proxy-middleware'
      4. 检查createNextApp的版本是否与你使用的nextjs版本兼容

        • 确保你的createNextApp版本与你使用的nextjs版本兼容。有时候使用不兼容的版本可能导致setupProxy.js不起作用。

      如果你尝试了以上的解决方案仍然没有解决问题,请提供更多的详细信息,比如你的项目结构、完整的错误信息等,以便我可以更好地帮助你解决问题。

      评论
    • CSDN-Ada助手 CSDN-AI 官方账号 2024-03-12 12:06
      关注

      【相关推荐】



      • 这篇博客: react项目配置proxy中的 使用http-proxy-middleware 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

        1.安装http-proxy-middleware

        yarn add http-proxy-middleware

        npm i -S http-proxy-middleware

        2.在src目下新建文件setupProxy.js,并进行如下配置

        const { createProxyMiddleware } = require("http-proxy-middleware");
        module.exports = function (app) {
        	app.use(
        		"/api",
        		createProxyMiddleware({
        			target: "http://127.0.0.1:3000",
        			changeOrigin: true,
        			pathRewrite: {
        				"/api": "",
        			},
        		})
            );
            // 更多代理配置...
        };

        ps:

        这里很多博主说使用如下配置:

        app.use(proxy('/api', { 
            target: 'http://127.0.0.1:3000',
            secure: false,
            changeOrigin: true,
            pathRewrite: {
             "^/api": "/"
            },
           }));

        我一开始也是这样配置,最近发现报错了proxy is not a function,后发现是http-proxy-middleware版本影响

        0.x.x版本的引用方式

        const proxy = require('http-proxy-middleware');

        1.0.0版本的引用方式

        const { createProxyMiddleware } = require('http-proxy-middleware');

         


      如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

      展开全部

      评论
    • GISer Liu 2024-03-12 13:26
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      针对你提出的问题描述,首先需要明确的是你使用的技术栈包括React 17、Next.js 12以及semi-design
      2.53.2,并且你希望在这个项目中通过http-proxy-middleware实现跨域配置,但是配置并没有生效。
      在React应用中使用http-proxy-middleware是一种常见的方式来解决跨域请求的问题。通常情况下,这个问题可以通过配置setupProxy.js文件来解决,但是你遇到了配置不生效的情况。
      针对这个问题,我会给出以下解决思路和解决方案:

      解决思路:

      1. 确认配置文件位置: 确保setupProxy.js文件位于正确的位置,并且在项目中能够被正确加载。
      2. 检查是否正确安装http-proxy-middleware 确保你已经正确安装了http-proxy-middleware包。
      3. 检查配置是否正确: 确保setupProxy.js文件中的配置项正确设置,特别是目标地址(target)是否正确设置。
      4. 检查是否存在其他配置冲突: 某些情况下,可能存在其他配置与setupProxy.js中的配置冲突,需要确保这些配置没有影响到代理的设置。
      5. 查看控制台输出: 在启动项目时,查看控制台输出是否有关于代理配置的提示或错误信息,以便进一步排查问题。

        解决方案:

      6. 确认setupProxy.js文件位置: 确保setupProxy.js文件位于项目的根目录下,并且没有其他文件名拼写错误或位置错误。
      7. 检查http-proxy-middleware包是否正确安装: 使用以下命令确保http-proxy-middleware包已经正确安装:
        bashCopy code
        npm install http-proxy-middleware
        
      8. 配置setupProxy.js文件: 确保setupProxy.js文件中的配置正确,示例如下:
        javascriptCopy code
        const { createProxyMiddleware } = require('http-proxy-middleware');
        module.exports = function(app) {
        app.use(
        '/api',
        createProxyMiddleware({
        target: 'http://example.com', // 这里修改为你的目标地址
        changeOrigin: true,
        })
        );
        };
        
      9. 检查其他配置项: 如果项目中存在其他跨域或代理相关的配置文件,确保它们没有影响到setupProxy.js的配置。
      10. 查看控制台输出: 在启动项目时,查看控制台输出,检查是否有关于代理配置的提示或错误信息,根据输出进一步排查问题。
        通过以上步骤,你应该能够解决React Next.js项目中http-proxy-middleware配置跨域不生效的问题。如果问题仍然存在,可以进一步检查项目中的其他配置项或尝试使用其他解决方案来实现跨域请求。

      如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

      用户答题指南

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    微信小程序中复制文本
    终于升级?89年Linux内核C语言“跟上时代”转成现代C
    论文解读(AGC)《Attributed Graph Clustering via Adaptive Graph Convolution》
    网络协议 从入门到精通系列讲解 - 总目录
    06、HSMS协议介绍
    计算机毕业设计之java+javaweb的学生信息管理系统
    SparkSQL执行流程与Catalyst优化器
    openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数
    《古代汉语》上下册课后习题答案
    django基于python的编制考试信息管理系统--python-计算机毕业设计
  • 原文地址:https://ask.csdn.net/questions/8072083