[解決済み] クロスドメインフォームのPOST送信
2022-04-22 13:41:35
質問
このトピックに関する記事や投稿をあちこち(SOを含む)で見ましたが、same-origin policyによってドメインをまたいだフォームPOSTはできないというのが一般的なコメントです。 唯一、same-origin policyがフォーム投稿に適用されないことを示唆している人を見たのはここだけです。 はこちら .
もっと正式なソースからの回答が欲しいです。 例えば、same-originがフォームのPOSTにどのように影響するか、しないかを扱うRFCをご存知の方はいらっしゃいますか?
明確化 : GETまたはPOSTを構築して、任意のドメインに送信できるかどうかを尋ねているのではありません。 聞いているのです。
- Chrome、IE、Firefox がドメイン 'Y' からのコンテンツがドメイン 'X' に POST を送信することを許可するかどうか。
- POSTを受信したサーバーが、実際にフォームの値をまったく見ないかどうか。 オンラインディスカッションの大半で、サーバーがポストを受信したが、フォームの値はすべて空であった/削除されたというテスターが記録されているため、このように言っています。
- どのような公式文書(RFCなど)が、期待される動作を説明しているか(ブラウザが現在何を実装しているかは関係なく)。
ちなみに、もしsame-originがフォームPOSTに影響しないのであれば、アンチフォージェリ・トークンが必要な理由が多少明らかになります。 というのも、攻撃者が単に HTTP GET を発行してアンチフォージェリ トークンを含むフォームを取得し、その同じトークンを含む不正な POST を作成できると考えるのはあまりにも安直だからです。 いかがでしょうか?
解決方法は?
同一生成元ポリシーは、ブラウザ側のプログラミング言語に対してのみ適用されます。そのため、JavaScript を使用してオリジンサーバとは異なるサーバに投稿しようとした場合、同じオリジンポリシーが適用されますが、フォームから直接投稿した場合、つまりアクションが異なるサーバを指している場合は、次のようになります。
<form action="http://someotherserver.com">
で、フォームの投稿にjavascriptが関与していない場合は、同じオリジンポリシーは適用されません。
参照 ウィキペディア 詳細はこちら
関連
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] チェックボックスとそのラベルをクロスブラウザーで一貫して揃える方法
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] ローカルファイルの読み込み時に "Cross origin requests are only supported for HTTP." というエラーが発生する。
-
[解決済み] フレックスアイテムを右寄せにするには?
-
[解決済み] 特定のクラスや属性を持たない要素を選択するCSSセレクタは書けますか?
-
[解決済み】enctype='multipart/form-data'とはどういう意味ですか?
-
[解決済み] application/x-www-form-urlencoded or multipart/form-data?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CSS - カーソルを置いたときに塗りつぶしの色を変更する - SVG PATH
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] HTMLとCSSによるテーブルスクロール [重複]について
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
-
[解決済み] input type="date "のフォーマットを変更する方法はありますか?
-
[解決済み] Flexbox:水平方向と垂直方向の中央揃え
-
[解決済み] HTMLのid属性とname属性の違い
-
[解決済み] Do I use <img>, <object>, or <embed> for SVG files?
-
[解決済み] CSS背景のストレッチとスケール