質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

13104閲覧

本当にこのフォームを再送信しますか?が全てのページで出てくる

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

1クリップ

投稿2020/01/13 15:48

Ruby on Railsの練習でTwitterのような文字・画像・動画が投稿できるサイトを作っているのですがすべてのページ(admin画面を除く)で再読み込みボタンを押すと「本当にこのフォームを再送信しますか?」と出てしまいます。

フォームがあるページで出てくるのなら分かるのですがフォームがない投稿一覧のページなどでも再読み込みボタン押すと「本当にこのフォームを再送信しますか?」出てしまいます。

ブラウザ

ブラウザによって挙動が違うのですがこれは何が原因なのでしょうか

  • GoogleChrome(PC) 何も出ない
  • GoogleChrome(スマホ) 何も出ない
  • Edge(PC)なにもでない
  • Safari(PC)出てくる
  • Safari(スマホ)出てくる

詳しい方いましたら解決方法など教えていただけると幸いです。

32Bit_int👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mariguranule

2020/01/13 17:27

こんにちは。 「本当にこのフォームを再送信しますか?」の機能を定義している部分のコードを載せないと、回答を得るのが厳しい気がします。
退会済みユーザー

退会済みユーザー

2020/01/13 17:36

inputやbuttonなどのことでしょうか?
m.ts10806

2020/01/13 23:55

「仕様です」という回答だけでよければしますが… 「フォーム 二重送信」とかで調べました?
guest

回答2

0

ベストアンサー

これは何が原因なのでしょうか

次のいずれかです。

  1. ブラウザのPOST要求(フォームデータ送信)で表示されたページに対する、リロード(再要求)の実装の違い(リロードにはブラウザバックなども含みます)。
  2. ページ遷移するサービスで、フォームデータの多重送信を防止する為のサーバー側プログラムを実装していない。

解決方法

  1. ページ遷移するサイトの場合

POST要求直後はリダイレクト応答を行い、二重にフォーム送信しない仕組みをサーバー側で取り入れる(ブラウザにGET要求しなおしてもらう)。
古くからある基本設計で、ユーザの安心感のために再要求によるサーバー負荷は妥協する。

  1. ページ遷移の伴わないSPAの場合

GET要求によって表示されたページからのフォームデータ送信は Ajax(ブラウザ側のJavaScriptによるHTTP通信)を使い、JavaScriptで完結させる(再度POST要求するのもJavaScript次第)。リダイレクト応答の必要がなく、サーバー負荷も抑えられる。

ご質問でも「練習」と仰っておられますので、「HTTP通信」を調べ、仕組みを理解すると、確かな根拠に基づく実装ができるようになると思います。

投稿2020/01/14 01:14

AkitoshiManabe

総合スコア5432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Safariでフォームがあるページにブラウザバック、または、そのページを更新(再読み込み)したときに、「本当にこのフォームを再送信しますか?」というメッセージが出るのはSafariの機能です。「フォーム、つまり入力欄の内容・データをもう一度サーバーに送信しますか?」ということです。このメッセージがある理由は、ネットショッピングでの二重決算などを防ぐためだそうです。

商品の購入の決済ページや個人情報の入力ページの場合は「本当にこのフォームを再送信しますか?」の表示では「キャンセル」をした方が無難です。なぜなら、再送信することで二重登録や二重決済となり後々面倒になる可能性があるためです。

(https://aprico-media.com/posts/2909 から引用)

投稿2020/01/13 19:20

編集2020/01/13 19:33
32Bit_int

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問