Javascript 从快速根路由器从react获取请求不工作

Javascript 从快速根路由器从react获取请求不工作,javascript,node.js,reactjs,express,openshift,Javascript,Node.js,Reactjs,Express,Openshift,我正试图在生产模式下通过react中的fetch api调用express根路由器(“/”),但它不起作用 我使用common server,就像我使用react视图作为静态文件一样,并呈现如下: if(process.env.NODE_ENV == 'production'){ app.use(express.static(`${__dirname}/client/build`)); app.get('*', (req, res) => { res.sen

我正试图在生产模式下通过react中的fetch api调用express根路由器(“/”),但它不起作用

我使用common server,就像我使用react视图作为静态文件一样,并呈现如下:

if(process.env.NODE_ENV == 'production'){
    app.use(express.static(`${__dirname}/client/build`));
    app.get('*', (req, res) => {
        res.sendFile(path.join(__dirname+'/client/build/index.html'));
      });
    }
此外,我已经尝试使用生产主机名作为fetch中的路由,但这对我来说不起作用,因为我使用的是代理

完整的故事是,我正在尝试从openshift oauth代理身份验证中获取一些令牌。有两个容器,一个用于代理,另一个用于我的web应用。当用户通过身份验证时,代理向“localhost:8080”(这是我的web应用)发送令牌

我是这样处理的,

app.get('/', function (req, res) {
    if (req.headers !== undefined && req.headers['x-forwarded-access-token'] !== undefined && req.headers['x-forwarded-user'] != undefined) {

        userDetails.accessToken = req.headers['x-forwarded-access-token'];
        userDetails.username = req.headers['x-forwarded-user'];

        req.session.token = userDetails.accessToken;
        req.session.username = userDetails.username;

        res.send({ accessToken: userDetails.accessToken, username: userDetails.username});
    }  
});
但是当我从react获取api调用上面的路由器时,我没有得到响应。应用程序崩溃了

当我在开发环境中运行它时,我同时在不同的服务器上运行,当我完整地编写它时,比如“
fetch”(“)http://localhost:3001)
' 然后它就起作用了

我希望它也能在生产中发挥作用。有什么帮助吗

更多详细信息

总体流程是,我已经在openshift上部署了我的react应用程序。我正在使用oauth代理对用户进行身份验证,然后在代理向我发送react应用程序中的身份验证令牌后登录到我的react应用程序


代理应用程序盒中有两个容器,代理和web应用程序。当我转到pod的路径时,它会将我带到KeyClope登录页面,在那里我输入我的凭据,一旦经过身份验证,代理将头中的身份验证令牌发送到它的sidecar容器,该容器是我的web应用程序(在pod内的localhost:8080上运行)。代理将头发送到
localhost:8080/
(webapp)这是web应用程序的根。现在,我必须从客户端向该路由发出一个获取请求并获取令牌(我无法获取令牌,因为它不能以这种方式工作,可能是因为我使用的代理运行在与我的web应用不同的主机上)。但是,当我在其他路由(如('/api/xyz')上发出请求时,它的工作方式非常好。根路由和代理存在一些问题。

当我在react代码中添加COR时,它起了作用。我在服务器代码中有它,但在react上没有

fetch('/auth', {
  credentials: 'include',
  mode: 'cors'
})

我在express服务器中使用npm cors包处理cors。应用程序使用(cors());对不起,我读得有点匆忙<代码>应用程序崩溃太模糊,请显示错误。是您的代理没有转发头吗?代理正在传递头,但它在根(“/”)上传递头。我想从那里获取这些头,然后在我的浏览器在根路由器(“/”)上发出请求时发送这些令牌,我正在从fetch API执行此操作。因此基本上有两个请求:a)您的代理向您的Web应用发送带有令牌的请求,b)您的react应用请求此信息。我有点困惑,因为您只显示了一条从代理接受令牌并立即用令牌响应的路由。如果您从react应用程序点击此路径,您的If条件可能会失败(因为缺少标题),并且您的中间件不会终止请求(例如,通过发送响应),也不会调用
下一步
。这可能是导致您的应用程序挂起/不响应/崩溃的原因。那么如何从客户端调用该api?