2017-12-05 14 views
0

PUTリクエストをPhilips Hueブリッジに送信しようとしているため、ランプの現在の状態を変更できます。私は私のPC上のWebサーバーからこれを行います。 CORSではすでにGETとPOSTリクエストを送信していましたが、PUTを送信した場合、「メソッドはAccess-Control-Allow-Methodsで見つかりません」というエラーが表示されます。私は確かにその方法だけをブロックすることは意味がないと確信しています。はPUTをPhilips Hueに送信できません(同じ発信元ポリシー)

私はこのコードをGETとPOSTのコードと同じですが、if節は必要ありません。

var lightReq = new XMLHttpRequest(); 
 

 
\t \t if ("withCredentials" in lightReq) { 
 
\t \t \t lightReq.open('PUT',stringChange,true); 
 
\t \t \t if (value == false) { 
 
\t \t \t \t lightReq.send("{\"on\":true}"); 
 
\t \t \t } 
 
\t \t \t else { 
 
\t \t \t \t lightReq.send("{\"on\":false}"); 
 
\t \t \t } 
 
\t \t }

たぶん誰かが同様の問題を抱えていたし、解決策を持って、または私がチェックすべきステップがあります。私はあらゆる助けに喜んでいる。

EDIT: ここでは、ヘッダーのスクリーンショットを示します。これは、PUTメソッドを受け入れる必要があることを示しています。 Screenshot of the header

EDIT2:ここroryhewittについては は、私が思うに、あなたが尋ねたものです: enter image description here

よろしく、 エイドリアン

+2

このエラーは、サーバ(色相橋)が「PUT」メソッドを含まない 'Access-Control-Allow-Methods'ヘッダを返していることを意味します。 「PUT」を試みる前に(ブラウザによって)自動的に行われる飛行前のCORSリクエストが表示される、ブラウザの開発者ツールを介して確認できます。 – Pointy

+0

GETリクエストとPOSTリクエストがうまくいったのは、カスタムリクエストヘッダーを持たない単純なリクエストであったため、ブラウザからCORSプリフライトOPTIONSリクエストがトリガされなかったからです。しかし、クロスオリジンのPUTリクエストは常にブラウザにプリフライトを実行させます。@ Pointyのように、Access-Control-Allow-Methodsのレスポンスヘッダに "PUT"が含まれていないと失敗します。 – sideshowbarker

+0

私のポストに追加されたように、ブラウザのnetworkscannerは、PUTメソッドを受け入れる必要があることを示しています。それとも私はミッドリーディングですか? – DaPole

答えて

0

ことがPOST要求に対する応答だかのように、それはあなたのスクリーンショットから見えます(私はAnfragemethodeフィールドで迷っています)?

これらのCORS応答ヘッダー(ACACを除く)の大部分は、プリフライトOPTIONS要求に対する応答でのみ返される必要があります。他の要求に対する応答で返される場合、「意味」はありません。それは橋の「不具合」ですが、あなたがブラウザのコードでやっていることではありません。

とにかく、あなたのJSコードがXMLHttpRequest経由でPUTリクエストを行うとき、ブラウザからネットワークトラフィックを見ると、OPTIONSリクエスト(CORSプリフライト)とPUTリクエストが表示されます。 OPTIONSリクエストのみが表示される場合は、そのリクエストのレスポンスヘッダを提供できますか?

+0

メインポストに新しい画像を追加しました。私が理解している限り、許されるべきですか、間違っていますか? – DaPole

+0

2番目のスクリーンショットを理解している場合、上部のセクションはPUTのリクエストヘッダーで、下部のセクションはOPTIONSのリクエストヘッダーが続く応答ヘッダーです。したがって、PUTリクエストが行われています(プリフライトOPTIONSが許可していない場合は発生しません)。ここで問題となるのは、資格情報を使用していますが、 'Access-Control-Allow-Origin:*'を返すことです。資格情報を使用する場合、EXACT発信元リクエストヘッダーをミラーバックする必要があります。 'Access-Control-Allow-Origin:http:// localhost'を参照してください。あなたは*の代わりにそれを送ってみることができますか? – roryhewitt

+0

これを送り返すと、Philips Hueブリッジのパラメータを変更する必要があることを意味します。しかし、それはオプションではない、私はブリッジの設定にアクセスする必要はありません。または私はあなたを誤解していますか? さらに、Webサーバー上の単純なHTMLから試してみましたが、動作していますので、FireHbbTV-PluginがCORSに持つ制限と関係していると思います。 – DaPole

関連する問題