Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IE、Edgeで二重送信 #59

Open
tomothumb opened this issue Nov 17, 2016 · 2 comments
Open

IE、Edgeで二重送信 #59

tomothumb opened this issue Nov 17, 2016 · 2 comments

Comments

@tomothumb
Copy link
Contributor

chromeなどでは問題ないんですが、
IE最新版やEdgeで、
一度送信したあと、ブラウザの戻るボタンから確認画面へ戻り、再度送信しますと、許可され重複送信となります。
別の投稿として認識され、メールも2通おくられます。
ファイル添付した場合は、画像が2つ登録されてしまいます。

Javascriptで、disableのタイミング調整してみましたが、改善されなかったです。

完了画面から戻った場合htmlソースはもちろん確認画面のものに戻るので、
hiddenのtokenは、初回と同じものがはいっています。

で、再送信を行った場合に、tokenチェックをくぐり抜けてるとなると、
IE系の場合は、ブラウザバックでSession情報までも復元されてしまうのかな?と感じてしまう不思議な挙動です。

セッションのクリアができていないか、
nonce / token周りの処理があやしい気がします。
もし解決できたらプルリク送ります。

とりあえず、報告でした。

@inc2734
Copy link
Owner

inc2734 commented Nov 18, 2016

MW WP Form は WordPress 標準のトークン処理(wp_create_nonce())を使っているので、確かトークンの生存時間が12時間か24時間だったと思います。なのでブラウザバックで確認画面が表示されてしまうという時点で、トークンによるチェックで防ぐのは難しそうな気がします…。

送信した後セッション情報は消しているので、本来であれば確認画面は表示されないはずなのですが、キャッシュしたページを表示する場合はセッションの有無は判定されない、という感じなのでしょうかね…

@tomothumb
Copy link
Contributor Author

tomothumb commented Nov 18, 2016

WordPress 標準のトークン処理(wp_create_nonce())を使っているので、確かトークンの生存時間が12時間か24時間だったと思います

いろいろ調べてましたが、そんな感じみたいですね。

フォームのユースケースとして、メール通知のみですと、2通来ちゃったよねと、さほど影響する事は少ないと思うんですが、
データ保管する場合は2通分のログが残りますし、
ファイル添付してもメディアが2つたまっちゃいますね。

直接、ポストタイプに保存するような処理を行ってて、重複ログがいっぱいあったので、気付いた次第でした。

送信した後セッション情報は消しているので、本来であれば確認画面は表示されないはずなのですが

そうですよね。他のブラウザでしたら、このようなことになりませんでしたので。

もうちょっと調べてみます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants