node.js https跨源请求

时间:2015-12-26 03:18:06

标签: javascript ajax node.js https cross-domain

我正在向node.js上的HTTPS服务器发出请求,如下所示,我得到了:

' No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' https://ku6sn0zj.apps.lair.io'因此不允许访问。响应的HTTP状态代码为502.' 错误。

我没有正确设置标题吗?当我在回调开始时放置console.log时,服务器上没有指示已尝试请求。我试过的其他方法是在 writeHead(statusCode,{here go them headers})中设置标题;

var server = https.createServer(options, function(req, res) {
    res.setHeader('Access-Control-Allow-Origin', 'https://ku6sn0zj.apps.lair.io'); // client address
    res.setHeader('Access-Control-Allow-Methods', 'POST');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    if (req.method == 'POST') {
        req.on('data', function(data) {
            data = data + '';
            data = data.split('&');
            if(data[0].slice(7) == 'login'){
                var credentials = {};
                credentials.username = data[1].slice(9);
                credentials.password = data[2].slice(9);
                game.foo(credentials.username, credentials.password, function(err, response) {
                    if (err) {
                        console.log(err);
                    } else if (response === true) { //password match
                        var token = foo()
                        res.writeHead(200);
                        res.end(token);

这种情况继续下去,但并不是那么重要。 现在,我正在使用来自节点快速应用程序的AJAX发送请求:

$.ajax({
            type: "POST",
            url: 'https://94jzlodc.apps.lair.io', //server address
            data: {
                action: 'login',
                username: $("#username").val(),
                password: $("#password").val()
            },
            statusCode: {*here comes response handling*}
})

http服务器侦听端口8000, 和快递应用程序默认为3000,

oi68.tinypic.com/15gxg0x.jpg这些是标题。不在应用程序设置中指定端口是我获得响应标头的唯一方法。

0 个答案:

没有答案