質問編集履歴

2

要所の変更

2018/12/17 06:52

投稿

nyaaway
nyaaway

スコア14

test CHANGED
@@ -1 +1 @@
1
- Vue.jsとFetch APIを使ってRiot Games APIを操作した結果、fetchがcorsで弾かれてしまう。
1
+ Fetch APIを使って外部APIにリクエスト送信した結果、corsで弾かれてしまう。
test CHANGED
@@ -2,15 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- Riot Gamesが提供するAPI(RiotGamesAPI)とVue.jsを使って簡単なwebアプリケーションを作ろうと奮闘しています。
5
+ 外部APIとVue.jsを使って簡単なwebアプリケーションを作ろうと奮闘しています。
6
-
7
- (リファレンス)https://developer.riotgames.com/api-methods/
8
6
 
9
7
 
10
8
 
11
9
  現在はまだ、取得したAPI keyを使って簡単なリクエストを送信してみようとしている段階です。
12
10
 
13
- RiotGamesAPIはJavaScriptのfetchを使ってリクエストを送信しようと試みています。
11
+ 外部APIはJavaScriptのfetchを使ってリクエストを送信しようと試みています。
14
12
 
15
13
 
16
14
 
@@ -18,17 +16,7 @@
18
16
 
19
17
  fetchを実行しようとすると、コンソールに以下のようなメッセージが表示されてしまいます。
20
18
 
21
- アドレスにある"UuuEee"はゲーム内に存在するサモナーネーム(名前)です。
22
19
 
23
-
24
-
25
- 下記はローカルで実行した際のエラーメッセージですが、Firebaseでホスティングしたもの、JSFiddleで試したもの
26
-
27
- [https://jsfiddle.net/xdj6pt50/4/](https://jsfiddle.net/xdj6pt50/4/)も同様のエラーが出てしまいました。
28
-
29
- 上記のようにURLにAPI keyを含める方法と、リクエストヘッダにAPI keyを与える方法がありますがどちらも同じようなエラーを吐きます。
30
-
31
- (後者については正しいAPI keyを与えても上記のエラーに加え、401が返ってきてしまいます)
32
20
 
33
21
  ```
34
22
 
@@ -54,152 +42,6 @@
54
42
 
55
43
 
56
44
 
57
-
58
-
59
- ```
60
-
61
-
62
-
63
- ### 該当のソースコード
64
-
65
- htmlでは定義した2つの関数を実行するボタンがそれぞれ1つずつ設置してあり、それを押すとマスタッシュ構文の部分がGETしてきた値に変わるという単純な処理になっているため、省かせていただきます。
66
-
67
-
68
-
69
- ```JavaScript
70
-
71
- var vm = new Vue({
72
-
73
- el: "#app",
74
-
75
- data: {
76
-
77
- summoner: {
78
-
79
- name: null,
80
-
81
- id: null,
82
-
83
- tier: null,
84
-
85
- division: null,
86
-
87
- lp: null
88
-
89
- },
90
-
91
- KEY: "<取得したAPI key>",
92
-
93
- URL: {
94
-
95
- SUMMONER: "https://jp1.api.riotgames.com/lol/summoner/v4/summoners/by-name/",
96
-
97
- RANK: "https://jp1.api.riotgames.com/lol/league/v4/positions/by-summoner/"
98
-
99
- }
100
-
101
- },
102
-
103
- methods: {
104
-
105
- getSummoner: function(){
106
-
107
- 'use strict';
108
-
109
- // UuuEeeはゲーム内の名前
110
-
111
- fetch(vm.URL.SUMMONER + "UuuEee?api_key=" + vm.KEY , {
112
-
113
- credentials: 'include',
114
-
115
- mode: 'cors',
116
-
117
- method: 'GET'
118
-
119
- /* APIkeyをリクエストヘッダに含める場合、下記を記述します
120
-
121
- headers: new Headers({
122
-
123
- "X-Riot-Token": vm.KEY
124
-
125
- })*/
126
-
127
- }).then(function(response) {
128
-
129
- if (response.ok) {
130
-
131
- return response.json();
132
-
133
- }
134
-
135
- return response.json().then(function(json) {
136
-
137
- throw new Error(json.message);
138
-
139
- });
140
-
141
- }).then(function(json) {
142
-
143
- vm.summoner.name = json.name;
144
-
145
- vm.summoner.id = json.id;
146
-
147
- }).catch(function(err) {
148
-
149
- window.console.error(err.message);
150
-
151
- });
152
-
153
- },
154
-
155
- // getSummonerで得たuniqueなsummoner IDを使って情報を取得
156
-
157
- getRank: function(){
158
-
159
- 'use strict';
160
-
161
- fetch(vm.URL.RANK + vm.summoner.id + "?api_key=" + vm.KEY, {
162
-
163
- mode: 'cors',
164
-
165
- method: 'GET'
166
-
167
- }).then(function(response) {
168
-
169
- if (response.ok) {
170
-
171
- return response.json();
172
-
173
- }
174
-
175
- return response.json().then(function(json) {
176
-
177
- throw new Error(json.message);
178
-
179
- });
180
-
181
- }).then(function(json) {
182
-
183
- vm.summoner.tier = json.tier;
184
-
185
- vm.summoner.division = json.rank;
186
-
187
- vm.summoner.lp = json.leaguePoints;
188
-
189
- }).catch(function(err) {
190
-
191
- window.console.error(err.message);
192
-
193
- });
194
-
195
- }
196
-
197
- }
198
-
199
- });
200
-
201
-
202
-
203
45
  ```
204
46
 
205
47
 
@@ -208,12 +50,12 @@
208
50
 
209
51
 
210
52
 
211
- Chromeの拡張にあるRestlet Clientを使ってGETしてみたところ、どちらの方法でも正しくJSON形式のデータが返ってきました。curlや直接URLを叩く方法でも同様にデータを得ることができました。
53
+ Chromeの拡張にあるRestlet Clientを使ってGETしてみたところ、正しくJSON形式のデータが返ってきました。curlや直接URLを叩く方法でも同様にデータを得ることができました。
212
54
 
213
55
  fetchを使ってリクエストするときに限り、CORSに弾かれてしまいます。
214
56
 
215
57
 
216
58
 
217
- プログラミングについて質問するのが初めてなので、冗長なコードであったり、質問内容に情報が不足していましたら申し訳ございません。
59
+ プログラミングについて質問するのが初めてなので、質問内容に情報が不足していましたら申し訳ございません。
218
60
 
219
61
  何卒よろしくお願いいたします。

1

タイトルの誤字を変更

2018/12/17 06:52

投稿

nyaaway
nyaaway

スコア14

test CHANGED
@@ -1 +1 @@
1
- Vue.jsとFetch APIを使ってRiot Games APIを操作した結果、fetchがcrosで弾かれてしまう。
1
+ Vue.jsとFetch APIを使ってRiot Games APIを操作した結果、fetchがcorsで弾かれてしまう。
test CHANGED
File without changes