2016-03-28 16 views
5

ढेर पर कई पदों के माध्यम से जाने के बाद भी मुझे सही जवाब नहीं मिला।सीओआरएस नोड जेएस अंक

CORS एक्सटेंशन पर भी दस्तावेज़ों की जांच की गई।

मैं निम्न सर्वर कोड और चल रहा है:

var WebSocketServer = require("ws").Server 
var http = require("http") 
var express = require('express') 
var cors = require('cors') 
var app = express(); 

app.use(cors()); 
var port = process.env.PORT || 9000 

var server = http.createServer(app) 
server.listen(port) 
var count = 0; 
var clients = {}; 
var rooms = {}; 
var wss = new WebSocketServer({server: server}) 
wss.on("connection", function(ws) { 
    ws.on("create-room", function(data) { 
     rooms[data] = {creator : data.user_id, created : new Date()} 
    }) 
    ws.on("close", function() { 
     console.log("websocket connection close") 
    }) 
}) 

लेकिन मैं मिलता है:

XMLHttpRequest http://localhost:9000/socket.io/?EIO=3&transport=polling&t=LE-CbU0 लोड नहीं कर सकता। वाइल्डकार्ड '*' का उपयोग 'एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिन' शीर्षलेख में नहीं किया जा सकता है जब क्रेडेंशियल्स ध्वज सत्य होता है। उत्पत्ति 'http://localhost:8100' इसलिए पहुंच की अनुमति नहीं है। XMLHttpRequest के क्रेडेंशियल्स मोड को द्वारा प्रमाण-पत्र विशेषता के साथ नियंत्रित किया जाता है।

मैं app.use(cors());

के साथ लाइन टिप्पणी अगर मैं मिलता है:

XMLHttpRequest http://localhost:9000/socket.io/?EIO=3&transport=polling&t=LE-Cwb8 लोड नहीं कर सकता। 'एक्सेस-कंट्रोल-अनुमति-उत्पत्ति' हेडर अनुरोधित संसाधन पर मौजूद है। उत्पत्ति 'http://localhost:8100' इसलिए पहुंच की अनुमति नहीं है। प्रतिक्रिया HTTP स्थिति कोड था 404.

तो स्पष्ट रूप से अपने सर्वर और चल ठीक लेकिन

उत्तर

8

के रूप में त्रुटि संदेश दर्शाता है, वाइल्डकार्ड Access-Control-Allow-Origin मूल Access-Control-Allow-Credentials साथ नहीं किया जा सकता है। डिफ़ॉल्ट रूप से, cors मॉड्यूल एक जंगली मूल उत्पत्ति का उपयोग करता है, और डिफ़ॉल्ट रूप से socket.io को प्रमाण-पत्र की आवश्यकता होती है (या ऐसा लगता है, वैसे भी)। आपको क्या करना है Origin अनुरोध के शीर्षलेख को पढ़ना है और इसे प्रतिक्रिया के Access-Control-Allow-Origin में शामिल करना है।

सौभाग्य से, cors यह बहुत आसान बनाता है: अनुरोध मूल को प्रतिबिंबित करने के लिए, origin: true संपत्ति के साथ एक विकल्प ऑब्जेक्ट में पास करें। तुम भी बिल्कुल साख अनुमति देने के लिए एक credentials: true संपत्ति की जरूरत है:

app.use(cors({ 
    origin: true, 
    credentials: true 
})); 
+0

प्रतिक्रिया के लिए धन्यवाद, अब मैं मिल 'साख झंडा 'सही' है, लेकिन 'पहुंच-नियंत्रण-अनुमति दें-क्रेडेंशियल' शीर्षक है ''' –

+0

धन्यवाद, आपने चाल की है :)। मैं इस –

+0

के लिए नया हूं हालांकि, अब मुझे 404 मिलते हैं जब ब्राउज़र यूआरएल को कॉल करता है ... यदि मैं आपका समाधान हटा देता हूं तो मुझे कॉर्स त्रुटि मिलती है ... यह भ्रमित है ... –