java.io.IOException:无法检索 API 配置,状态为:从网络服务器调用时为 404

java.io.IOException: Failed to retrieve API configs with status: 404 when called from webserver

所以我有一个 appengine webapp,其中包括本地部署在端口 8888 上的云端点。

标题中的错误消息出现在我们的 webpack-dev-server 启动时,它在端口 3000 上运行并代理所有以 /_ah/api/* 开头到 http://localhost:8888 的请求。具体的控制台报错如下:

奇怪的是,当我在另一个选项卡中打开这个 url 并将端口切换到 8888 时,请求通过了,并且 webpack-dev-server 也可以从那时起将请求代理到后端上。

我读到的大多数其他问题建议将 gradle 中的应用引擎配置设置为以下内容:

httpPort = 8888
httpAddress = "0.0.0.0";

但是我已经这样做了,所以这似乎不是问题所在。

我的相关webpack配置如下:

module.exports = webpackMerge(commonConfig, {
  ...
  output: {
    ...
    publicPath: 'http://localhost:3000/'
  },
  devServer: {
    port: 3000,
    open: true,
    proxy: {
      '/_ah/api/*': 'http://localhost:8888/'
    }
  }
});

如果没有 changeOrigin: true,某些后端将无法正常工作。你可以这样使用它:

proxy: {
    '/_ah/api/*': {
        target: 'http://localhost:8888/',
        changeOrigin: true,
        secure: false
    }
}

如果这不起作用,代理路径 (/_ah/api/) 是否需要包含在请求中?如果忽略路径有效,您可以尝试:

proxy: {
    '/_ah/api/*': {
        target: 'http://localhost:8888/',
        ignorePath: true
    }
}

如果这不起作用,我会尝试删除代理路径的最后一部分:/_ah/api/*/_ah/api。这应该做同样的事情,但第一个已弃用。