heroku上缺少Access-Control-Allow-Origin标头

时间:2014-11-18 16:31:09

标签: node.js heroku socket.io same-origin-policy allow-same-origin

启动时的一些服务器代码:

var util = require('util');
var express = require('express');
var http = require('http');
var sio = require('socket.io');

var app = express();
var server = http.createServer(app);
var io = sio.listen(server);

console.log('origins-> '+io.origins());
//io.set("origins","*:*");
io.origins("*:*");

server.listen(process.env.PORT || 80, function (){
    var addr = server.address();
    console.log('App listening '+JSON.stringify(addr));
});

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
console.log("user connected");

  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});

这是git repo:https://github.com/Foxbond/heroku-socket-test

{heroku} 表示 http://foxclick.heroku.com

错误表格chrome console:

  

XMLHttpRequest无法加载{heroku} /socket.io/?EIO=3&transport=polling&t=1416327810844-0。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' {heroku}'因此不允许访问。

回复标题:

HTTP/1.1 301 Moved Permanently
Connection: keep-alive
Server: Cowboy
Date: Tue, 18 Nov 2014 16:23:34 GMT
Content-Length: 0
Location: {heroku}/socket.io/?EIO=3&transport=polling&t=1416327810844-0

一切都在localhost上使用这些响应头:

HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Length: 101
Access-Control-Allow-Origin: *
Set-Cookie: io=cFBQp1g1WCDbE0_1AAAA
Date: Tue, 18 Nov 2014 16:28:03 GMT
Connection: keep-alive

我不知道该怎么办,我想我已经尝试了所有可能的解决方案。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我有类似的问题尝试将html放在像xampp或Apache这样的网络服务器上。

通常使用套接字运行时,如果我在本地使用套接字服务器运行html,我会得到相同的No' Access-Control-Allow-Origin'。但是,如果您使用网络服务器,这不应该发生