1

我有新发布的 Philips Hue 桥,我试图通过向它发送 JSON 请求从浏览器控制它。我正在使用第三方“助手”api 只是为了让事情变得更容易一些——但这与哪一个无关,因为它下面只是发送一个常规的 PUT 请求。我只是使用 Chrome 在本地(在本地网络服务器上)运行 JS。

输入http://192.168.1.86/api/2e51aa2362f1a416d8eab4816b669eb/lights/16/state

{ on: true }

问题是我收到以下 CORS 错误:

XMLHttpRequest 无法加载http://192.168.1.86/api。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://example.com ”。

这是完全有道理的——而且我理解正在做什么——毕竟我试图向远程服务器发出 PUT 请求,结果我的浏览器禁止了我。但是我显然无法更改集线器上的代码。

有什么解决办法吗?我看到不久前飞利浦需要在他们自己的网站上做类似的事情以允许跨域访问。

我可以在那里找到很少的信息——而且我不确定飞利浦最近是否改变了一些东西。第三方 JS APIS 甚至没有提到这一点的事实让我相信飞利浦可能已经改变了一些东西(我发现第三方 webapp也有同样的问题)。

编辑:

这些是返回的标题:

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Connection: close
Access-Control-Max-Age: 3600
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Access-Control-Allow-Headers: Content-Type
Content-type: text/html
Content-Length: 0
4

2 回答 2

4

事实证明,Fiddler(Windows HTTP 调试代理)在某种程度上与我的 CORS 请求发生冲突——这没有任何意义,但现在我刚刚关闭了 Fiddler,它工作正常并且能够发出 PUT 请求。

我启用了“流”,但这并没有什么不同。

于 2015-10-16T19:45:29.097 回答
1

飞利浦 Hue 网桥发送“Access-Control-Allow-Origin:*”标头,因此它应该可以正常工作。据我所知,它总是这样做。

我刚刚检查了我放置在不同网络服务器上的“clip.html”文件(在桥上找到)的副本,它工作正常。

您确定您使用的是正确的 IP 地址(例如 GET 到网桥是否有效?)

于 2015-10-16T12:45:27.927 回答