web-dev-qa-db-ja.com

CORSプロキシWebサイトはどのように機能しますか?

Webプロジェクトのフロントエンド側を開発しているときに、CORS保護エラーが発生しました。私のフロントエンドプロジェクトが同じ起源ではなかったので、当然のことです。 CORS保護を回避する方法を調べたところ、いくつかのプロキシWebサイトが見つかりました。

私はウェブサイトの名前については触れたくありませんが、通常は次の形式で機能します。

https://acorsproxywebsite.com/https://example.com

このリクエストを送信したとき、GETリクエストを送信し、CORSが無効なWebサイトから応答を受信することができました。

CORSプロキシWebサイトはどのようにして保護をバイパスし、クロスソースからの応答を取得できますか?なぜリクエストを正常に送信できるのに、できないのですか?フロントエンドからCORS保護をバイパスできるように、同様の構造を実装することは可能ですか?

2
Pilfility

CORSポリシーは、サーバーではなくブラウザによって適用されます。サーバーは、ブラウザにどのように動作させたいかを伝えるいくつかのHTTPヘッダーを設定するだけです。 proxyserverにそれらのヘッダーを強制することを強制するものは何もありません。他のヘッダーと同様に、それらを追加、編集、または削除できます。

したがって、プロキシはリクエストを送信できますが、送信することはできません。フロントエンド開発者として、ブラウザが課す制限に縛られているためです。それを回避する方法はありません。バックエンドに適切なCORSヘッダーを設定するか、プロキシに依存し続ける必要があります。

では、単純なプロキシでバイパスできる場合、CORSとまったく同じOriginポリシーは役に立たないのでしょうか。番号!リクエストがacorsproxywebsite.com Cookieまたはその他の認証情報example.comは、ブラウザによるリクエストに自動的に含まれません。つまり、proxyserverはそれ自体が見ることができるものだけを公開しており、他の潜在的な被害者が見ることができるものは何も公開していません。

4
Anders