我試圖調用正在通過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