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メソッドを受け入れる必要があることを示しています。
EDIT2:ここroryhewittについては は、私が思うに、あなたが尋ねたものです:
よろしく、 エイドリアン
このエラーは、サーバ(色相橋)が「PUT」メソッドを含まない 'Access-Control-Allow-Methods'ヘッダを返していることを意味します。 「PUT」を試みる前に(ブラウザによって)自動的に行われる飛行前のCORSリクエストが表示される、ブラウザの開発者ツールを介して確認できます。 – Pointy
GETリクエストとPOSTリクエストがうまくいったのは、カスタムリクエストヘッダーを持たない単純なリクエストであったため、ブラウザからCORSプリフライトOPTIONSリクエストがトリガされなかったからです。しかし、クロスオリジンのPUTリクエストは常にブラウザにプリフライトを実行させます。@ Pointyのように、Access-Control-Allow-Methodsのレスポンスヘッダに "PUT"が含まれていないと失敗します。 – sideshowbarker
私のポストに追加されたように、ブラウザのnetworkscannerは、PUTメソッドを受け入れる必要があることを示しています。それとも私はミッドリーディングですか? – DaPole