我有新發布的飛利浦Hue橋,我試圖通過向它發送JSON請求來從瀏覽器控制它。我使用的是第三方的'helper'api只是爲了讓事情變得簡單一些 - 但它與哪一個無關,因爲它下面只是發送一個普通的PUT請求。我只是使用Chrome在本地運行JS(在本地Web服務器上)。如何使用Philips Hue Hub繞過CORS
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.
這是非常合情合理的 - 我understan什麼做的 - 畢竟我試圖向遠程服務器發出PUT請求,因此我的瀏覽器正在禁止我。不過,我顯然不能更改集線器上的代碼。
有沒有解決這個問題的方法?我看到飛利浦需要在自己的網站上做something similar以允許跨域訪問。
我可以在這裏找到非常少的信息 - 我不確定飛利浦最近是否改變了一些東西。事實上,第三方JS APIS甚至沒有提到這一點,這讓我相信飛利浦可能已經改變了一些東西(我發現third party 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
這個話題被提到了一段時間,但我也有類似的問題。我試圖從PC上的網絡服務器獲得PUT請求。 GET和POST工作,但是當它應該發送PUT時,它會給我一個錯誤,因爲在Access-Control-Allow-Methods中找不到方法。 Hue是否允許PUT也是實際的?你怎麼知道你的提琴手是原因? – DaPole
好問題。我想也許這是我發現它的巧合。不確定是否在請求日誌中看到特定的內容。 –
嗯,好的。那麼我將不得不搜索......我只是希望它仍然有效,我不知道他們爲什麼應該阻止PUT。 – DaPole