React、Node.js、Socket.ioを使用してアプリを作成しました
Node バックエンドを heroku にデプロイし、フロントエンドを Netlify
にデプロイしました。CORS エラーがサーバーに関連していることはわかっていますが、何を追加しても、下の図のエラーは解決されません。
また、React の package.json に「proxy」としてプロキシ スクリプトを追加しました:「https://googledocs-clone-sbayrak.herokuapp.com/」
これは私の server.js
ファイルです;
ここでフロントエンドにリクエストを行います;
リーリー
cors パッケージをインポートしていないようです。どこかから輸入されたものなのでしょうか?
リーリーTL;DR
https://googledocs-clone-sbayrak.netlify.app/
は origin ではありません。末尾のスラッシュを削除します。問題の詳細
Origin
ヘッダー値では末尾のスラッシュは使用できませんCORS プロトコル (Fetch 標準 で指定) によると、 ブラウザは
Origin
リクエスト ヘッダーを末尾にスラッシュのある値に設定することはありません 。したがって、https://googledocs-clone-sbayrak.netlify.app/whatever
のページがクロスオリジン リクエストを行う場合、リクエストのOrigin
ヘッダーには p> が含まれます。 リーリー末尾のスラッシュなし。
サーバー側のバイトごとの比較
Socket.IO を使用していますが、これは node.js cors パッケージ
それらをまとめます
###明らかに、 ### リーリーに依存します。リクエストの送信元が CORS 構成の
origin 値 (https://googledocs-clone-sbayrak.netlify.app/
) と一致する場合。は
falseと評価されるため、
corsパッケージは応答に
標準的な例を取得する
Fetch 標準のセクション 3.2.5 には、
このエラーの有益な例Access-Control-Allow-Origin
ヘッダーを設定せず、ブラウザーがCORS チェックが失敗したため、CORS エラーが発生しました。,
も記載されています。 リーリーそして、CORS チェックが失敗する理由を説明します: