teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字の修正

2021/06/12 14:55

投稿

hallen0225
hallen0225

スコア587

answer CHANGED
@@ -19,8 +19,8 @@
19
19
  contentType: 'application/json',
20
20
  scriptCharset: 'UTC',
21
21
  headers: {
22
- 'X-CSRF-TOKEN': token ,
22
+ 'X-CSRF-TOKEN': token,
23
- 'X-XSRF-TOKEN': token ,
23
+ 'X-XSRF-TOKEN': token,
24
24
  },
25
25
  success: function (outdata, dataType) {
26
26
  if (outdata[0] == 'OK') alert('メール送信しました');

1

解決法として提示したソースコードの修正

2021/06/12 14:55

投稿

hallen0225
hallen0225

スコア587

answer CHANGED
@@ -3,17 +3,14 @@
3
3
  ("./sendmail"に限りログインを不要にすることもできますが、メール送信機能であることを考えると不適切と思います)
4
4
 
5
5
  ここで必要な「ログイン情報」というのは、こちらで試した限り、
6
- - Cookieに保持されている"XSRF-TOKEN"
7
- - フォームからの情報送信時に必要な"CSRF-TOKEN"
6
+ - フォームからの情報送信時に必要な"CSRF-TOKEN"、"XSRF-TOKEN"
8
7
 
9
8
  の2種類です。(formのaction属性にURLを指定し、submitボタンを押したときには、自動でこれらの情報が渡されるようになっています)
10
9
 
11
10
  下記のように変更することで動作しないでしょうか??
11
+ (追記:ソースの内容を修正しました)
12
12
  ```
13
- let xsrfToken = document.cookie
14
- .split('; ')
15
- .find(row => row.startsWith('XSRF-TOKEN'))
13
+ let token = $('input[name="_csrf"]').val();
16
- .split('=')[1]
17
14
  $.ajax({
18
15
  type: 'POST',
19
16
  url: './sendmail',
@@ -22,8 +19,8 @@
22
19
  contentType: 'application/json',
23
20
  scriptCharset: 'UTC',
24
21
  headers: {
25
- 'X-CSRF-TOKEN': $('input[name="_csrf"]').val(),
22
+ 'X-CSRF-TOKEN': token ,
26
- 'X-XSRF-TOKEN': xsrfToken,
23
+ 'X-XSRF-TOKEN': token ,
27
24
  },
28
25
  success: function (outdata, dataType) {
29
26
  if (outdata[0] == 'OK') alert('メール送信しました');