回答編集履歴

3

要点追記

2024/03/28 15:29

投稿

Refrain
Refrain

スコア537

test CHANGED
@@ -3,8 +3,24 @@
3
3
 
4
4
  # 解答修正
5
5
 
6
+ ## 要点
7
+
8
+ 1. `fetch`で指定したURLがスラッシュで始まっており、
9
+ スラッシュで始まるURLは現在のドメインを自動で使う
10
+ 参考: [URL とは何か - ウェブ開発を学ぶ | MDN](https://developer.mozilla.org/ja/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL#%E7%B5%B6%E5%AF%BE_url_%E3%81%A8%E7%9B%B8%E5%AF%BE_url)
11
+ 1. VSCodeで実行するとlocalhost + スラッシュ始まりのURLとして評価され、
12
+ サンプルとは別のURLにリクエストを投げる
13
+ →**リクエスト先が存在しないのでエラーが発生!**
14
+ 1. 仮にドメインまで使用したURLでリクエストを投げても、
15
+ CORSによるエラーが発生する可能性がある
16
+ →**元サイトでしか実行できない可能性がある!**
17
+ 参考: [CORS - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN](https://developer.mozilla.org/ja/docs/Glossary/CORS)
18
+
19
+ ## 詳細
20
+
6
21
  `fetch`でリクエストを投げた先が存在しないため発生しています。
7
22
  例では`fetch('/article/fetch-basics/post/user')`としていますが、これは実質的に`fetch('https://ja.javascript.info/article/fetch-basics/post/user')`となります(下記)。
23
+ 参考: [URL とは何か - ウェブ開発を学ぶ | MDN](https://developer.mozilla.org/ja/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL#%E7%B5%B6%E5%AF%BE_url_%E3%81%A8%E7%9B%B8%E5%AF%BE_url)
8
24
 
9
25
  ```javascript
10
26
  (async () => {
@@ -24,7 +40,6 @@
24
40
  })();
25
41
  ```
26
42
 
27
- 参考: [URL とは何か - ウェブ開発を学ぶ | MDN](https://developer.mozilla.org/ja/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL#%E7%B5%B6%E5%AF%BE_url_%E3%81%A8%E7%9B%B8%E5%AF%BE_url)
28
-
29
43
  sanchu様の環境ではlocalhostで実行しているため、`fetch('http://127.0.0.1:5500/article/fetch-basics/post/user')`を実行していることになり、結果としてリクエスト先が見付からずエラーが発生しています。
30
44
  また、仮にコードで`fetch('https://ja.javascript.info/article/fetch-basics/post/user')`を実行したとしても、同サイト内でなければCORS周りでリクエストが蹴られると思われます。
45
+ 参考: [CORS - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN](https://developer.mozilla.org/ja/docs/Glossary/CORS)

2

参考記事追加

2024/03/28 13:09

投稿

Refrain
Refrain

スコア537

test CHANGED
@@ -24,5 +24,7 @@
24
24
  })();
25
25
  ```
26
26
 
27
+ 参考: [URL とは何か - ウェブ開発を学ぶ | MDN](https://developer.mozilla.org/ja/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL#%E7%B5%B6%E5%AF%BE_url_%E3%81%A8%E7%9B%B8%E5%AF%BE_url)
28
+
27
29
  sanchu様の環境ではlocalhostで実行しているため、`fetch('http://127.0.0.1:5500/article/fetch-basics/post/user')`を実行していることになり、結果としてリクエスト先が見付からずエラーが発生しています。
28
30
  また、仮にコードで`fetch('https://ja.javascript.info/article/fetch-basics/post/user')`を実行したとしても、同サイト内でなければCORS周りでリクエストが蹴られると思われます。

1

解答修正

2024/03/28 13:06

投稿

Refrain
Refrain

スコア537

test CHANGED
@@ -1,2 +1,28 @@
1
1
  `POST`が許可されていないからではないでしょうか?
2
2
  `GET`に変えるのはどうでしょうか。
3
+
4
+ # 解答修正
5
+
6
+ `fetch`でリクエストを投げた先が存在しないため発生しています。
7
+ 例では`fetch('/article/fetch-basics/post/user')`としていますが、これは実質的に`fetch('https://ja.javascript.info/article/fetch-basics/post/user')`となります(下記)。
8
+
9
+ ```javascript
10
+ (async () => {
11
+ let user = {
12
+ name: 'John',
13
+ surname: 'Smith'
14
+ };
15
+ let response = await fetch('https://ja.javascript.info/article/fetch-basics/post/user', {
16
+ method: 'POST',
17
+ headers: {
18
+ 'Content-Type': 'application/json;charset=utf-8'
19
+ },
20
+ body: JSON.stringify(user)
21
+ });
22
+ let result = await response.json();
23
+ alert(result.message);
24
+ })();
25
+ ```
26
+
27
+ sanchu様の環境ではlocalhostで実行しているため、`fetch('http://127.0.0.1:5500/article/fetch-basics/post/user')`を実行していることになり、結果としてリクエスト先が見付からずエラーが発生しています。
28
+ また、仮にコードで`fetch('https://ja.javascript.info/article/fetch-basics/post/user')`を実行したとしても、同サイト内でなければCORS周りでリクエストが蹴られると思われます。