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

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

ただいまの
回答率

87.80%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 930

score 88

お世話になってます。
今、モーダルウィンドウからajax通信にてPOST送信したものを
LaravelのRouteでルーチングして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();
});


ルーチング

Route::post('mailbox', 'GayregistController@Gay_register');

●試したこと
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ページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Nitta

    2020/01/23 15:37

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

    キャンセル

  • sola-msr

    2020/01/23 15:56

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

    キャンセル

  • Nitta

    2020/01/23 20:13 編集

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

    キャンセル

回答 2

checkベストアンサー

0

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

とりあえずフロント側でPOSTされた値の確認サーバー側で(普通のREST構造ならController)送信した値が来ているかの確認(Laravelだとdd()とかvar_dump()とか)をしてください。まずは問題の切り分けを

あとこういうわからない状態に陥った場合は最小限の構成にして徐々に元に戻していくのが解決が早いです(usernameだけの項目がある状態にしてみたりしてとか)

答えられるのはこれくらいかなと

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/25 16:11

    m.ts10806さん
    お、まじすかwグーグル先生のサジェストででたんでそれで入力しちゃいました。おぼえとこ

    Nittaさん
    progateクリアできた=理解した にはならないでしょう
    まずは自分が何を理解していないのかを理解することから始めてみては?(実のところそれをするには実際に手を動かしていくのが早いのですが)

    キャンセル

  • 2020/01/27 08:05

    m.ts10806,sola-msr様

    おはようございます。
    phpも奥が深いのでなかなかですが、公式ドキュメントを良く読みこなしたり
    何がわかってないのか弱いのか、その辺を精査し直して出直したいと思います。
    今回は習得方法など色々ありがとうございました

    キャンセル

  • 2020/01/27 10:32

    頑張ってくださいー

    キャンセル

0

/mailbox  に対して何一つ情報送信してないみたいですけど(send()になにもセットしてない)。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/23 15:39

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

    キャンセル

  • 2020/01/23 15:41

    回答してるのになぜ回答してと依頼してるのでしょうか。

    キャンセル

  • 2020/01/23 15:51

    それに今ついてる回答、コメントで何もヒントにできないのでしたら、今やろうとしていることは今やるべきではないということです。

    どんなに期待してもコピペで解決できるコードは出てきませんよ。理解
    なく持っていくだけになるのが分かってるから。

    手に負えないものをいつまでも追ってるくらいならさっさと基礎修得に切り替えた方が何倍も賢明です。

    キャンセル

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

  • ただいまの回答率 87.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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