如何使用 Philips Hue Hub 绕过 CORS

How to get around CORS with Philips Hue Hub

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

PUT http://192.168.1.86/api/2e51aa2362f1a416d8eab4816b669eb/lights/16/state

{ on: true }

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

XMLHttpRequest cannot load http://192.168.1.86/api. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access.

这非常有道理 - 我明白在做什么 - 毕竟我正试图向远程服务器发出 PUT 请求,结果我的浏览器禁止我这样做。但是我显然不能更改集线器上的代码。

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

我能找到的相关信息很少 - 我不确定飞利浦最近是否有所改变。事实上,第三方 JS APIS 甚至没有提到这一点,这让我相信飞利浦可能已经改变了一些东西(我发现 third party webapp 有同样的问题)。

编辑:

这些是headers回来的:

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

飞利浦 hue 桥发送 "Access-Control-Allow-Origin:*" header 所以它应该可以正常工作。据我所知,它总是这样做。

我刚刚检查了一份 "clip.html" 文件(在网桥上找到),我将其放置在不同的网络服务器上并且工作正常。

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

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

我启用了 'Stream',但这并没有什么不同。