2012-12-22 55 views
1

我正在爲我的網站創建一個功能,人們可以與我聊天。爲了做到這一點,我使用php和apache構建了網站的常規部分,並使用node.js(使用socket.io和express)構建了聊天服務器。當人們訪問我們的網站時,如果他們想與我聊天(在同一個窗口中,而不是彈出窗口),有一個小酒吧從側面滑出。隨着聊天服務器的運行,我看到客戶端試圖連接:與同一服務器上運行的socket.io(節點)和apache發生CORS錯誤

info - socket.io started 
Express server listening on port 8000 in development mode 
debug - client authorized 
info - handshake authorized 776963641537662118 

它沒有再往前走,試圖透過WebSocket或XHR連接,我得到的客戶端以下錯誤控制檯:

XMLHttpRequest cannot load http://wundertutor.com:8000/socket.io/1/?t=1356208544112. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true. 

另外,我有這在我的.htaccess文件:

<IfModule mod_headers.c> 
Header set Access-Control-Allow-Origin "*" 
</IfModule> 

回答

0

,除非你想其他領域能夠訪問內容受着這mod_headers.c,然後限制訪問控制你這樣的域:

<IfModule mod_headers.c> 
Header set Access-Control-Allow-Origin http://wundertutor.com/ 
</IfModule> 

即刪除通配符「*」,錯誤是抱怨。

+0

感謝您的回覆。我試過你的解決方案,但它仍然無法正常工作。順便說一下,如果您想自己查看錯誤,我正在離開節點應用程序。 – anonymousfox

+0

我再也看不到原始錯誤了,但我在控制檯上看到一個404錯誤,提示 'GET http://wundertutor.com/javascripts/socket.io-client/lib/socket.io-client .js 404(未找到)' 看起來您的客戶端可能配置錯誤? socket.io通常希望在它提供的靜態路由上提供客戶端JavaScript。在這裏看到socket.io wiki [鏈接] https://github.com/LearnBoost/Socket.IO/wiki/How-do-I-serve-the-client – stevejpurves

+0

對不起。我離開節點應用程序運行,但我認爲一旦我退出控制檯就停止了。無論如何,我使用「nohup node app.js&」來運行它,它現在應該保持運行。我仍然無法弄清楚原來的問題。我似乎沒有嘗試改變它:/ – anonymousfox

2

我意識到問這個問題已經很長時間了,但您可能想嘗試讓您的節點應用程序也允許CORS。您可以通過以下方式執行此操作:

io.set('origins', 'http://example.com:80'); 

其中example.com是請求來自的地方。這是我在我的應用程序上做的,它允許CORS請求。

相關問題