刚开始玩后端使用node.js求教一些关于接口请求"基础"问题

不是跨不跨域问题,我是想问, 为什么非同源情况下会请求成功?

(虽然console报错,但请求成功了)
**

环境

**
node.js
express
mysql
Ajax
**

问题

**
前端:Ajax发送post请求...

$.ajax({
    url : "http://localhost:3000/savePost",
    type : "post",
    dataType: 'json',
    data:{title: title, content: content},
    success: function (_data) {
        alert('提交成功');
    },
    error: function() {
        alert('服务器请求失败!');
    }
});

后端:接收到发送得值

router.post ('/savePost', (req, res) => {
  let getData = {
    title: req.body.title,
    content: req.body.content
  };
  db('insert into newsdetail (title, content) values ("'+getData.title+'", "'+getData.content+'")',
  (err, data) => {
    if (err) throw new Error(err);
    res.json({status: '200', result: 'ok'});
  })
});

请教后端这里还需配置或添加什么吗?因为,我前端页面没在环境中,在桌面放了个测试文件
浏览器控制台(Console)在请求过程中会报错,如:
Failed to load http://localhost:3000/savePost: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
这种情况下,虽然这错误,但(Network)请求成功了Status Code:200 OK,数据库也插入成功了。如图
图片描述

图片描述

图片描述

图片描述

当然,浏览器设置了跨域那个问题是不会报错。
**这正常吗?后端这块是否要添加什么?不了解这个,百度也不晓得怎么问。
求教!!!**

阅读 3k
3 个回答

Response Headers
Access-Control-Allow-Origin: *

同源策略中要保证域名,协议,端口一样。
既然跨域访问自然要涉及处理跨域啦,
express处理比较简单

  1. cnpm install cors --save // 安装模块
  2. var cors = require('cors') // require模块
  3. app.use(cors()) // use一下就好啦

即可解决跨域

建议了解一下浏览器的 同源策源跨域资源共享
可以参考一下阮一峰老师的博客链接描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进