【问题标题】:How to add a URL to the begining of every fetch request in my application?如何在我的应用程序中每个获取请求的开头添加一个 URL?
【发布时间】:2021-11-14 08:44:49
【问题描述】:

我有一个以 CRA 开头的 react 应用,并为我的 react 应用设置了一个后端服务器

我的获取请求类似于

const res = await fetch("/applications", {
...

我已经使用 http-proxy-middleware

为我的应用设置了代理中间件
const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    createProxyMiddleware({
      target: 'https://projects.mydomain.com/', 
      changeOrigin: true,
    })
  );
};

当我使用fetch("/applications") 向后端发出请求时,我的请求被解析为fetch("/projects.mydomain.com/applications")

但是我需要在所有获取请求的开头添加一个 url 路径,我最终想要的结果是:

fetch("/projects.mydomain.com/b2b-iys/applications")

我试过这样做:

  app.use(
    '/b2b-iys/',
    createProxyMiddleware("/b2b-iys", {
      target: 'https://projects.muhammed-aldulaimi.com/', 
      changeOrigin: true,
    })
  );

但这没有用。

理想情况下,我希望将其添加到我的代理中,而不是一个一个地更改文件。

这里有什么解决办法?

【问题讨论】:

    标签: reactjs http-proxy-middleware


    【解决方案1】:

    从 http-proxy-middleware documentation 我认为您可以使用 pathRewrite 选项添加基本路径:

    app.use(
      createProxyMiddleware({
        target: 'https://projects.mydomain.com', 
        changeOrigin: true,
        pathRewrite: {'^/': '/b2b-iys/'}
      })
    );
    

    【讨论】:

    • 当我这样做时,在启动应用程序后,我被重定向到我的主页 (projects.mydomain.com),而不是响应本地开发构建。
    • 我还注意到这种行为是使用 http-proxy-middleware 库的结果,当我使用 CRA 提供的 package.json 中的默认代理选项时,仍然无法建立连接在我原来的反应端口 (300) 上显示我的应用程序
    猜你喜欢
    • 2023-03-17
    • 2020-05-10
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多