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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

解決済

HTTP419: 認証がタイムアウト エラー

Nitta
Nitta

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

2回答

0評価

0クリップ

10閲覧

投稿2020/01/23 02:14

編集2022/01/12 10:58

お世話になってます。
今、モーダルウィンドウからajax通信にてデータを入力して、
DBにinsertさせたいんですが、以下のエラーが出て少し困惑しています。
CSRF関連からのエラーであることは、わかるのですが対処しきれない感じです。
お分かりの方おられましたら、ご教示下さい。

エラー名
HTTP419: 認証がタイムアウトしました - 以前に有効だった認証の有効期限が切れました。
(XHR)POST - http://localhost:8000/mailbox

●Form側

<form id="regist_Form"> {{ csrf_field() }} <div class="form-group"> <label for="username" class="control-label">ユーザー名</label> <input type="text" class="form-control" id="username" name="username" value="{{ old('username') }}" placeholder="example@gmail.com" required/> @if($errors->has('username'))<span class="text-danger">{{ $errors->first('username')}}</span> @endif </div> <div class="form-group"> <label for="mail" class="control-label">希望アドレス</label> <input type="text" class="form-control" id="mail" name="mail" value="{{ old('mail')}}" required title="この項目は必須です。">@gay86.com @if($errors->has('mail'))<span class="text-danger">{{ $errors->first('mail')}}</span> @endif </div> <div class="form-group"> <label for="password" class="control-label">パスワード(半角英数)</label> <input type="password" class="form-control" id="password" name="password" value="{{ old('password')}}" required title="この項目は必須です。"> </div> <div class="form-group"> <label for="password_2" class="control-label">パスワード(確認)</label> <input type="password" class="form-control" id="password_2" name="password_2" value="{{ old('password_2')}}" required title="この項目は必須です。"> </div> <div class="form-group"> <label for="to-mail" class="control-label">連絡用アドレス</label> <input type="mail" class="form-control" id="Nitta_mail" name="Nitta_mail" value="{{ old('Nitta_mail')}}" required title="この項目は必須です。"> </div>          <div id="result"></div> <input type="button" id="gay_resgister" class="btn btn-primary btn-block" value="登録"> </form>

●JS側

$("#gay_resgister").click(function () { var pass = $('#password').val(); var pass_2 = $('#password_2').val(); console.log(pass);⇒入力データが取得できない console.log(pass_2);⇒入力データが取得できる var xhr = new XMLHttpRequest(); xhr.open('post','./mailbox'); xhr.send(); });

●試したこと
csrf関連のエラーから以下の2つを実行。


Form内に以下のmetaタグを挿入
{{ csrf_field() }}を外して
<meta name="csrf-token" content="{{ csrf_token() }}">

JS側
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('X-CSRF-TOKEN', $('meta[name="csrf-token"]').attr('content'));
xhr.open('post','./mailbox');
xhr.send();

error名
⇒InvalidStateError


Form内に以下のmetaタグを挿入
{{ csrf_field() }}を外して
<meta name="csrf-token" content="{{ csrf_token() }}">

JS側
var xhr = new XMLHttpRequest();
xhr.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
xhr.setRequestHeader( "X-From", location.href );
xhr.open('post','./mailbox');
xhr.send();

error名
⇒InvalidStateError

尚、{{ csrf_field() }}が有無に関係なく同じエラーが出ます。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

sola-msr
sola-msr

2020/01/23 02:19

csrf-tokenはPOSTされてるのはブラウザのDevツール等で確認しましたか?
Nitta
Nitta

2020/01/23 02:51

返信ありがとうございます。 cookieのXSRF-TOKENに値が入っているので、POST送信はされているものと思います。
Nitta
Nitta

2020/01/23 06:37

基礎からしっかりやりたいと思う。 この質問を最後に暫く書き込むのを辞めたいと思うので、 この質問だけは回答してもらえないでしょうか?
sola-msr
sola-msr

2020/01/23 06:56

> cookieのXSRF-TOKENに値が入っているので、POST送信はされているものと思います。 なんでそう思ったのかわかりませんが、cookieのXSRF-TOKENに値が入っているからといってサーバー側にPOSTされてるとは限りません。ブラウザのDevツールかサーバー側でPOSTパラメータの確認をしてください。
Nitta
Nitta

2020/01/23 11:15 編集

\$_POST\["mail"\]や\$_POST\["passeord_2"\]などの入力値は、きっちり値取得できinsertもできています。 しかし、何故か\$_POST\["username"\]などには値を入力してるのに、空です。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。