[react]CanvasはどうしてCORSに行くことができますか!!
最近の開発では,写真にラベルを付ける機能を実現した.
サーバはAWS 3、フロントエンドはlocalhost:300ポートを使用して開発されている.
getImageData()を使用して、写真の位置値を検索してタグを付けますが、このようなエラーが発生しました.
初級開発者を悩ませるCORSエラーに直面.
上記の誤りをCORS政策違反の誤りと呼ぶ.
では、CORS政策とは何か.
ソース間共有リソース(CORS)
CORSは、異なるソース間でリソースを伝達する方法を制御するメカニズムである. CORSリクエストを実現するには、サーバが特定のヘッダ「アクセス制御」Allow-Originとともに応答する必要があります. CORSポリシーに違反した場合、異なるソースで何かを要求すると、ブラウザはセキュリティ上の理由で閉じます.
たとえば、クライアントポートは3000、サーバポートは8080です.
クライアントからサーバにリソースを要求すると、CORSエラーメッセージはクライアントコンソールに赤で表示され、データは提供されません.
CORSの問題を解決するには、同じソースからリソースを要求することができます!
簡単ですよね?
ここにスプーンをもう1杯入れて、CanvasがなぜCORSエラーを起こしたのか見てみましょう.
参考資料
Allowing cross-origin use of images and canvas
ということで、CORSの解決法を見つけましたが、2種類くらい使ったので整理してみました.
JavaScriptでは、画像自体にCross Originプロパティを設定する必要があります.
最も基本的な方法は、サーバにタイトルを設定することです.
反応式ドキュメントには、プロキシ設定方法が示されている.
package.jsonにproxyを1行追加すればいい!
ブラウザはreact devサーバに要求を送信する(http://localhost:3000). React devサーバは、要求をapiサーバに送信する(http://apiserver.com:5000). apiサーバは、react devサーバに応答を渡す. React devサーバは、この応答をブラウザに直接渡します.
この場合、ブラウザの観点からapiサーバではなくreact devサーバが応答しているように見えます. こうして4つの解決策が見つかった.
解決策は私が見つけたよりずっと多いですが、大体たくさん書いてあります.
ネット上で最も重要な問題を知って嬉しいです.CORSエラーがなければ、見逃します.
そして、言語の基本文法のほかに、ネットで学ぶことが多すぎると感じましたが・・・😂
ありがとうございます.🙏
サーバはAWS 3、フロントエンドはlocalhost:300ポートを使用して開発されている.
getImageData()を使用して、写真の位置値を検索してタグを付けますが、このようなエラーが発生しました.
初級開発者を悩ませるCORSエラーに直面.
上記の誤りをCORS政策違反の誤りと呼ぶ.
では、CORS政策とは何か.
🤔 なぜCORS関連の話題になったのか。
関連資料
ソース間共有リソース(CORS)
MDNをまとめてみます。
たとえば、クライアントポートは3000、サーバポートは8080です.
クライアントからサーバにリソースを要求すると、CORSエラーメッセージはクライアントコンソールに赤で表示され、データは提供されません.
CORSの問題を解決するには、同じソースからリソースを要求することができます!
簡単ですよね?
ここにスプーンをもう1杯入れて、CanvasがなぜCORSエラーを起こしたのか見てみましょう.
参考資料
Allowing cross-origin use of images and canvas
Canvas를 사용할 때 CORS 승인 없이 이미지를 사용할 수는 있지만,
이미지를 변형한 상태에서 데이터를 캔버스에서 꺼내려 한다면
“canvas tainted” 관련 오류가 발생할 것이다.
結果は脈絡のある文章です.ということで、CORSの解決法を見つけましたが、2種類くらい使ったので整理してみました.
1.画像のCross Origin属性を設定する
JavaScriptでは、画像自体にCross Originプロパティを設定する必要があります.
var img = new Image();
img.src = "http://other-domain.com/image.jpg";
img.crossOrigin = "Anonymous";
あまりいい方法ではないようです.2.サーバータイトルにCross Origin属性を設定する
最も基本的な方法は、サーバにタイトルを設定することです.
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*"); // 모든 도메인
res.header("Access-Control-Allow-Origin", "https://example.com"); // 특정 도메인
});
3.エージェントの設定
反応式ドキュメントには、プロキシ設定方法が示されている.
package.jsonにproxyを1行追加すればいい!
//package.json
{
...,
"proxy": "http://apiserver.com:5000",
...,
}
要求は次のように処理されます.この場合、ブラウザの観点からapiサーバではなくreact devサーバが応答しているように見えます.
解決策は私が見つけたよりずっと多いですが、大体たくさん書いてあります.
に感銘を与える
ネット上で最も重要な問題を知って嬉しいです.CORSエラーがなければ、見逃します.
そして、言語の基本文法のほかに、ネットで学ぶことが多すぎると感じましたが・・・😂
ありがとうございます.🙏
Reference
この問題について([react]CanvasはどうしてCORSに行くことができますか!!), 我々は、より多くの情報をここで見つけました https://velog.io/@minseok_yun/Canvas에서-CORS-에러가-왠-말이야テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol