回答編集履歴
3
要点追記
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
参考記事追加
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
解答修正
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周りでリクエストが蹴られると思われます。
|