IT関連

AS400/IBMi Laravel Ajax通信 エラー419 CSRFトークンの設置 JavaScript

投稿日:2019年10月11日 更新日:

基本私の記事はIBMi/AS400をベースにやっています。ご了承のほど。

 

LaravalではPOST通信時にCSRFトークンを送らないといけないのはすでに知っている。

 

なのでFormを設置時に下記のように{{ csrf_field }}を入れないといけない。

これを入れる理由はセキュリティのため。クロスサイトリクエストフォージェリ対策。詳しくはググってほしい。

 

この{{ csrf_field }}は、実際には下記のようなものが吐き出される。これがないとPOST時にLaravel大先生から怒られてしまう。

 

 

今回Ajax通信をしようとしてみた。

 

詳細は割愛するとして、こんな感じでPOSTで通信するわけだが、CSRF対策を何もせずにやると当然のごとくエラーになる。

 

そのときブラウザのコンソールに出るエラーコードは419。

これはいわずとしれたCSRF対策、前述のものが出来ていないと怒られている。

 

 

しからばどう書けばいいのか。

 

書き方は、request.setRequestHeaderにそれを書いてあげる。

こう書く。{{ csrf_field }}にすれば<input>から</input>まで要素から全てが生成されるが、{{ csrf_token() }}にすればさっきの

 

の部分だけが吐き出されるわけですね。

 

なので、結果的に、

といった形で収まり、うまくいく。

 

jQueryの書き方はこんな感じ

 

 

別解

JavaScriptは別ファイルにすると思いますが、そうなってくるとJavaScriptコードの中で{{ csrf_token() }}が使えないので、

 

Bladeのヘッダー部に

とメタデータで入力しておき、

 

こうやって取得するしかないのかも。

 

下記はその場合のjQueryの書き方。

 

 

Ajax通信の決まり事も割愛させていただきますが、Laravel/IBMi/Ajaxの通信の仕方は追々記事にする予定です。

スポンサーリンク




スポンサーリンク




-IT関連
-, , , , ,

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

JavaScript scriptタグを記述する場所

(1)<body>要素の直下や任意の場所 <body>要素は画面を描画する内容が記述されているので、その内容と一緒にするとコードが複雑化する。 また描画中にスクリプトを埋め込む …

AS400/IBMi VirtualBoxとVagrantでMac開発環境を構築する

自宅でテレワークするのに、いちいち会社のPCにリモートして仕事をするのが奇妙なのでMac内に開発環境を作ろうと思います。 その備忘録です。 巷ではDockerが主流というか、現時点で使っていないやつは …

CPIのACEにあるテストサイトと公開サイトの違い

CPIのシェアードプランZ2からACEに切り替えた際に疑問に思ったこと備忘録。   HPより引用。公開されているものだから大丈夫でしょう。問題あれば連絡ください。   サーバ構成で …

Windows 出勤退勤時間をパソコンのオンオフの時刻で調べる

実はパソコンの中には、起動やシャットダウンのログ(記録)が残っています。 よくある労働基準監督署がパソコンのログを見れば一発で判るというのがコレです。 それを見る方法をご紹介します。   1 …

Photoshopで画像が開けない。要求された操作を完了できません。プログラムエラーです。

社内で回ってきた画像をPhotoshopで開いて加工しようとしたのだが、   要求された操作を完了できません。プログラムエラーです。   と表示されて開けないことがあった。 エラー …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に