Socket.io 快速io CORS不工作
我正在尝试建立一个Socket.io 快速io CORS不工作,socket.io,express.io,Socket.io,Express.io,我正在尝试建立一个Node.js服务器,它可以同时为http和socket请求提供服务 注意:我的服务器和客户端需要是两个独立的东西。我不是从服务器提供index.html。我有一个单独的,独立的拷贝index.html和socket.io.js 当我向服务器发出AJAX请求时,它工作得非常好。 但是,当我尝试使用套接字连接到服务器时,我得到了一个错误。 XMLHttpRequest无法加载http://localhost:3000/socket.io/?EIO=2&transport=poll
Node.js服务器
,它可以同时为http
和socket
请求提供服务
注意:我的服务器
和客户端
需要是两个独立的东西。我不是从服务器提供index.html
。我有一个单独的,独立的
拷贝index.html
和socket.io.js
当我向服务器发出AJAX
请求时,它工作得非常好。
但是,当我尝试使用套接字连接到服务器时,我得到了一个错误。
XMLHttpRequest无法加载http://localhost:3000/socket.io/?EIO=2&transport=polling&t=1401878926555-0. 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://192.168.1.33因此,不允许访问。
我的服务器端代码
ar express = require('express.io');
var cors = require("cors");
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var gen = require('./public/javascripts/config');
gen.log("holla");
var app = express().http().io();
app.use(cors());
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
// development only
if ('development' === app.get('env')) {
app.use(express.errorHandler());
}
var parseCookie = require('connect').utils.parseCookie;
app.get('/', function(req, res) {
res.end("holla!");
});
app.post('/search', function(req, res) {
res = gen.setHeaders(res);
console.log('search segment hit');
res.end('search segment hit');
});
app.post('/opponent', function(req, res) {
res = gen.setHeaders(res);
console.log('opponent segment hit');
res.end('opponent segment hit');
});
app.io.route('ready', function(req) {
console.log(req.data);
req.io.emit('ready-ack', {data: "hahah"});
});
app.listen(3000);
console.log("Server Listening to Port 3000");
我的客户端代码-Index.html
$(document).on('ready', function() {
var socket = io.connect("http://192.168.1.33:3000");
socket.emit("ready", {data:"client ready"});
socket.on('ready-ack', function(data) {
console.log(data);
});
$("#but").on('click',function(e){
e.preventDefault();
$.ajax({
url:"http://localhost:3000/search",
type:"POST",
success:function(data){
console.log("AJAX Data - "+data);
}
});
});
$("#tub").on('click',function(e){
e.preventDefault();
$.ajax({
url:"http://localhost:3000/opponent",
type:"POST",
success:function(data){
console.log("AJAX Data - "+data);
}
});
});
});
我现在有这个问题,你解决了吗?@KevinSanchez:是的,先生!我解决了。这些标题也应该存在:res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE');res.header('Access-Control-Allow-Headers','Content-Type')代码>