2016-08-29 58 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

相关问题