AS400 IT備忘録 JavaScript Laravel PHP

IBMi/AS400 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の通信の仕方は追々記事にする予定です。

スポンサーリンク




スポンサーリンク




-AS400, IT備忘録, JavaScript, Laravel, PHP

執筆者:


comment

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

関連記事

このスクリーンセーバーには、より新しい種類のビデオカードまたはDirect3D・・・

職業柄パソコンをセッティングする機会が多いのだが、過去にある一台がスクリーンセーバーの設定のとき、 「このスクリーンセーバーには、より新しい種類のビデオカードまたはDirect3Dと互換性のあるビデオ …

AS400/IBMi QRYプログラムからSQL文を生成

あまり意味ないかもしれないけど、備忘録。 使用しているQRY/400の定義からSQL文を逆算して出力する方法。   まずSQLソースファイルを作る。逆算したSQL文を置く場所ですね。 CRT …

git Laravelで引っ越しの備忘録

自分の備忘録です。正直自分にわかるようにしか書いていません。 真似て事故っても責任は持てませんのでご了承ください。でも何かの参考になれば幸いです。   開発環境は自席WindowsPCのXA …

AS400/IBMi ACSのキーボード設定

クライアントアクセスのときと同じでキーボード設定が必要。 拡張子は同じ.KMPだが中身は全く違うので、最初は一から設定しなければいけないみたい。   設定まで 「編集」をクリック 「設定」か …

gitで本番と開発環境の連携 初めてのデプロイ

これは自分用の備忘録です。画像はありません。 他のサイトの説明が難しすぎて、文字だけでもヒントが欲しいという私と同じレベルの人はどうぞ。 何があっても責任は取れませんがご参考までに。   一 …

Adsense広告


文字で検索

人気記事

なぜだか人気記事

読んでほしい順に