回答編集履歴
3
書き直し
test
CHANGED
@@ -1,25 +1,33 @@
|
|
1
|
-
|
1
|
+
(手元でコードの確認とかを改めて行い、まるごと書き換えてます)
|
2
|
-
|
3
|
-
公式サイト上のAPI利用例や外部の人が公開しているAPIクライアントライブラリの実装を見る限り、API側で`Content-Type`を厳密に見ているような気がします。
|
4
2
|
|
5
3
|
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
## コードについて
|
10
|
-
|
11
|
-
-myHeaders.append('Content-Type', 'application/json; charset=UTF-8');
|
12
|
-
|
13
|
-
+myHeaders.append('Content-Type', 'application/json');
|
14
|
-
|
15
|
-
```
|
16
6
|
|
17
7
|
|
18
8
|
|
19
|
-
|
9
|
+
もとのコードをブラウザで動作されるように実行すると、JDoodleへのAPI呼び出し時のリクエストヘッダーが`text/plain`になっています。
|
20
10
|
|
21
|
-
|
11
|
+
これは、Fetch APIにおける`mode: no-cors`の条件を満たさなくなるために、`myHeader`での`Content-Type`の上書きが機能していないためだと思います。
|
22
12
|
|
23
13
|
|
24
14
|
|
25
|
-
※[N
|
15
|
+
※[MDNより](https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch#supplying_request_options)
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
## 目的について
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
> ブラウザで利用できる簡易オンラインコンパイラを作りたい。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
上記理由により、Fetch APIで直接APIコールするのは不可能と考えたほうが良さそうです。
|
28
|
+
|
29
|
+
(一泊おいて考えたら、ID/Secretを両方使用してコールする機能をブラウザ上で実行出来るのはアカウント利用者側にとっての不利益も大きいし、塞がれてて然るべきではあります)
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
もし仮に、静的HTML以外の手段を取れるのであれば、バックエンドで「JDoodle APIをコールして」「結果を中継する」ようなAPIを1個だけ自作するような形式で、簡易的なWebアプリとして実装する必要があります。
|
2
参考情報を追加
test
CHANGED
@@ -19,3 +19,7 @@
|
|
19
19
|
MIMEの部分だけでなく、ヘッダーの値全体での比較をしているなら
|
20
20
|
|
21
21
|
上記のように`Content-Type`から`charset`の部分を消せば動く可能性はありそうです。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
※[Node製のクライアントライブラリ実装例](https://github.com/wrepl/jdoodle/blob/main/src/index.ts)
|
1
回答の対象スコープを追記
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
HTTPステータス 415の解消に関してだと、推測寄りになるのですが、
|
2
|
+
|
1
|
-
|
3
|
+
公式サイト上のAPI利用例や外部の人が公開しているAPIクライアントライブラリの実装を見る限り、API側で`Content-Type`を厳密に見ているような気がします。
|
2
4
|
|
3
5
|
|
4
6
|
|