如何正确地从nodejs重定向我的应用程序?

时间:2018-12-31 03:45:25

标签: node.js reactjs cors

我有一个页面,当用户单击按钮时,应用程序将侦听并创建对我的本地服务器的访存调用,该调用将执行一个过程,然后重定向到外部网址,例如google.com(我实际上放置了主页只是为了查看它是否可以工作,但是什么也没收到,我得到相同的错误(服务器和React应用程序位于不同的端口上))如何避免当前遇到的错误“访问在'http://localhost:3001/处获取” (从“ http://localhost:3000/servreq”重定向(从“ Add Headers”重定向)已被CORS策略阻止:对预检请求的响应未通过访问控制检查:邮件头上没有“ Access-Control-Allow-Origin”标头请求的资源。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。”

客户:--------------------------------------------- -

//.....
testitem(){
fetch('http://localhost:3000/payreq', {
            method: 'post',
            headers: { 'Content-Type': 'application/json'},
            body: JSON.stringify({
            })
        })
}
//......
<button className="btn btn-primary" onClick={this.testitem}>Redirect</button>
//......

服务器:--------------------------------------------- -

const express= require('express');
const bodyParser= require('body-parser');
const cors=require('cors');
const app=express();
app.use(bodyParser.json());
app.use(cors({origin: 'http://localhost:3001'}));
//im requesting from say localhost:3001/test/test 

app.post('/',(req,res)=>{
    res.redirect('http://localhost:3001/');
})

我尝试执行以下操作,但没有结果: (我知道原产地为空,但我不知道如何解决)

-concatenation method

-Wildcard method '*' (i dont think this is the appropriate plus does not work)

-{{3}}

一次尝试确实奏效了,但是我认为应该怎么做。

我只是在服务器端生成了一个res.json(要访问的网站),而在客户端上则只是读取并使用window.location = response进行重定向,但我仍然不认为这是解决问题的方法如果那里有人可以帮助我,我会很感激。

1 个答案:

答案 0 :(得分:0)

如果要从其他应用程序服务器请求页面,则必须通过在托管应用程序服务器的web.xml中添加以下几行并将必要的jar添加到类路径中,来告诉托管应用程序服务器接受来自其他托管服务器的请求

<filter>
         <filter-name>CORS</filter-name>
         <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
     </filter>
     <filter-mapping>
         <filter-name>CORS</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>

必要的罐子:cors-filter.jar,java-property-utils.jar 注意:通过添加/ *,我从cors过滤器中排除了所有链接,您可以设置必要的路径。 希望能解决您的问题。