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);


慕容708150
浏览 2575回答 2
2回答

梵蒂冈之花

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

隔江千里

options请求是浏览器行为,因为跨域时浏览器(某些)会发送一个options请求来测试,如果这个请求被响应,才会进行后面的正常请求。所以你只要针对options请求返回一个200的状态码即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript