node 跨域访问

新手上路,请多包涵

访问node服务器跨域,post请求变成了options,设置请求头后,获取不到post请求提交的数据

var http = require('http');
var url = require("url");

http.createServer(function (req, res) {
    var urlObj = url.parse(req.url);
    var pathname = urlObj.pathname;
    // 关闭nodejs 默认访问 favicon.ico
    if (!pathname.indexOf('/favicon.ico')) {
        return; 
    };
     let requestM=req.method;

    res.writeHeader(200,{
        "access-control-allow-origin": "*",
        "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS",
        "access-control-allow-headers": "Content-Type,Content-Length, Authorization, Accept,X-Requested-With",
        "access-control-max-age": 10,
        "Content-Type": "application/json"
    });

    if(requestM==="POST"){
        var post = '';  
                // 通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
                req.on('data', function(chunk){    
                    post += chunk;
                });
    }
    //获取不到post 请求过来的参数

}).listen(3000);
阅读 2.1k
2 个回答

怎么post数据的,贴出来看下
另外我觉得在res写头没有必要写allow header 你的需求要求这么高吗

options请求是浏览器行为,因为跨域时浏览器(某些)会发送一个options请求来测试,如果这个请求被响应,才会进行后面的正常请求。

所以你只要针对options请求返回一个200的状态码即可。

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