我试图调用正在通过socket.io担任了一个网页,我得到以下错误:socket.io和jQuery负载
XMLHttpRequest cannot load http://foo.bar:12354/ . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://foo.bar ' is therefore not allowed access.
下面是我调用的页面非常简单JQ代码:
$(document).ready(function() {
$('#x').load('http://foo.bar:12354');
});
这里是我的简单socket.io例如:
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(12354);
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://foo.bar:12354");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Headers", "Content-Type");
res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
next();
});
当我拉起来,直接使用页面页面加载正常。
一个论坛上建议,我需要包括阿帕奇CORS审批,但把这个变成一个点接入没有帮助:
Header set Access-Control-Allow-Origin "*"
这似乎是它应该是一个相当简单的任务,但它有我难住了。任何建议都会让人感激。
尝试将“Access-Control-Allow-Origin”添加到您的快速app.use:'res.header(“Access-Control-Allow-Origin”,“*”);' – pherris
谢谢pherris - 那是我尝试的第一件事。我还在res.header之前放置了一个console.log行。当我使用h t t p:// foo时,这条线会发射。酒吧/网址,但是当我使用jQ加载它根本不会启动。这应该是对我很重要的线索,但我仍然没有看到它。 – edwardsmarkf
这是什么代码,index.html? '$(document).ready(function(){('#x').load('http://foo.bar:12354'); });' – pherris