我知道在這個主題上有一些討論,但我無法找到我的問題的答案。我在localhost:8020上的Aptana服務器上運行了一個網頁。該頁面上的JavaScript正在擊中我在本地主機上運行的節點服務器:1337。這裏是節點代碼:Socket.io - 訪問控制 - 允許來源不允許來源
var io = require('socket.io');
var http = require('http');
var sys = require('sys');
var json = [];
var server = http.createServer(function (req, res) {
var headers = {};
headers["Access-Control-Allow-Origin"] = "*";
headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, OPTIONS";
headers["Access-Control-Allow-Credentials"] = true;
headers["Access-Control-Max-Age"] = '86400'; // 24 hours
headers["Access-Control-Allow-Headers"] = "X-Requested-With, Access-Control-Allow-Origin, X-HTTP-Method-Override, Content-Type, Authorization, Accept";
res.writeHead(200, headers);
res.end();
});
server.listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
var socket = io.listen(server);
socket.on('connection', function(){
console.log("Connected");
});
我通過更改標頭來處理cors請求,我一直在做這些。我的客戶端代碼通常是socket.io初學者的東西。下面是從我的代碼標籤:
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script>
// Create SocketIO instance
var socket = new io.Socket('localhost',{
port: 1337
});
socket.connect();
// Add a connect listener
socket.on('connect',function() {
log('<span style="color:green;">Client has connected to the server!</span>');
});
// Add a connect listener
socket.on('message',function(data) {
log('Received a message from the server: ' + data);
});
// Add a disconnect listener
socket.on('disconnect',function() {
log('<span style="color:red;">The client has disconnected!</span>');
});
// Sends a message to the server via sockets
function sendMessageToServer(message) {
socket.send(message);
log('<span style="color:#888">Sending "' + message + '" to the server!</span>');
}
// Outputs to console and list
function log(message) {
var li = document.createElement('li');
li.innerHTML = message;
document.getElementById('message-list').appendChild(li);
}
當我跑我不斷收到代碼中的錯誤「的XMLHTTPRequest ......原產地不被訪問控制允許來源允許的」。我的瀏覽器是Chrome。 1.爲什麼我的瀏覽器使用XMLHTTPRequest而不是WebSocket? 2.當我更改標題時,爲什麼會出現Access控制錯誤? 感謝您提前提供的所有幫助。
我一直面臨同樣的問題,它使我瘋狂。你能找到解決方案嗎? – Bitsian
我弄明白了這一點,我需要發佈完整的答案,但它已經有一段時間了,我需要看看我做了什麼。給我一些關於你的具體問題的更多細節。 – jhamm
我也遇到這個問題,並有興趣聽到你的解決方案。我提出的唯一解決方案並不理想,因爲它涉及到在socket.io庫中修改「manager.js」代碼以更改它聲明頭的行['Access-Control-Allow-Origin'] =' *「;一定有更好的方法... – OtherBrotherDarryl