2015-10-15 55 views
1

我有新發布的飛利浦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 

回答

4

原來Fiddler(的Windows HTTP調試代理)與我的CORS請求,不知何故發生衝突 - 這沒有按」沒有任何意義,但現在我只關閉了Fiddler,它工作的很好,並且能夠提供PUT請求。

我已啓用'流',但沒有什麼區別。

+0

這個話題被提到了一段時間,但我也有類似的問題。我試圖從PC上的網絡服務器獲得PUT請求。 GET和POST工作,但是當它應該發送PUT時,它會給我一個錯誤,因爲在Access-Control-Allow-Methods中找不到方法。 Hue是否允許PUT也是實際的?你怎麼知道你的提琴手是原因? – DaPole

+0

好問題。我想也許這是我發現它的巧合。不確定是否在請求日誌中看到特定的內容。 –

+0

嗯,好的。那麼我將不得不搜索......我只是希望它仍然有效,我不知道他們爲什麼應該阻止PUT。 – DaPole

1

飛利浦色調橋發送「訪問控制允許來源:*」頭所以它應該只是工作。據我所知,它總是這樣做。

我剛剛檢查了一個「clip.html」文件(在橋上找到)的副本,該文件放置在不同的網絡服務器上,並且工作正常。

你確定你使用正確的IP地址(例如做一個GET橋工作?)

+0

GET工作正常。我可以得到燈光和場景列表,但不能做PUT。你還有'舊'橋?我從其他人編寫的兩個網絡應用程序中收到這個錯誤,所以我相信一定會改變。 –