关于node.js跨域的问题?

发布于 2022-09-12 03:53:52 字数 1316 浏览 30 评论 0

使用node的express框架搭建的mockjs环境,设置了跨域,但是好像失效了。
对应的地址是http://localhost:5000/test

app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Headers', 'Content-type');
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS,PATCH");
    res.header('Access-Control-Max-Age',1728000)
    next();  
});

但是在5500的访问报错

  $.get('http://localhost:5000/test', function (data) {
            console.log(JSON.parse(data));
        })

image.png

解决方案

前端也要处理跨域的问题
使用jsonp,

$.ajax({
    url: 'http://localhost:5000/test',
    type: 'get',
    dataType: 'jsonp',  // 请求方式为jsonp
    // jsonpCallback: "onBack",    // 自定义回调函数名
    success(res){
        console.log(res)
});

对应后台修改为jsonp

app.get('/test', function (req, res) {
    res.jsonp(Mock.mock({
        "status": 200,
        "data|1-9": [{
            "name|5-8": /[a-zA-Z]/,
            "id|+1": 1,
            "value|0-500": 20
        }]
    }));
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

久隐师 2022-09-19 03:53:52

前端使用nginx反向代理,解决跨域

你的前端端口是5500

server {
   listen       5500;
   server_name  localhost;
   
   location ^~/test/ {
    proxy_pass http://localhost:5000;
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文