2016-08-29 57 views
0

在我的客戶機App下面的代碼:「只有HTTP支持跨源請求。」與Node.js的

const socket = io('${location.protocol}//${location.hostname}:8090'); 

是給我下面的錯誤在我的瀏覽器:

XMLHttpRequest cannot load http://${location.protocol}/socket.io/?EIO=3&transport=polling&t=LRLUtss. Cross origin requests are only supported for HTTP. 

我的客戶端代碼如何使用Node.js通過npm start所以運行當我更新我的代碼時,「http://localhost:3000」在我的瀏覽器中自動刷新。

+0

似乎'$ {location.protocol}'沒有被替換爲字符串。 – jfriend00

+0

@ jfriend00多數民衆贊成在我的想法。爲什麼會這樣? – Baz

+0

也許瀏覽器不支持模板文字ES6功能? – jfriend00

回答

1

看來${location.protocol}沒有被替換爲字符串,因此它在socket.io嘗試使用URL時仍然在URL中。這可能是因爲瀏覽器不支持該特定的ES6功能。

你可以通過構建你的URL字符串來添加字符串,以舊式的方式來解決它。

const socket = io(location.protocol + '//' + location.hostname + ':8090'); 

而且,如果你希望在那裏支持替代可靠地工作,你也應該使用反引號作爲字符串分隔符。

+0

@Baz - 你的問題中的例子也沒有顯示使用反引號作爲字符串分隔符。但是,如果你不使用它,那很難看出它在任何瀏覽器中的工作方式,所以我假設反引號是在真實的代碼中,而不是你在問題中顯示的內容。 – jfriend00

相關問題