質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2452閲覧

jsでapiからデータ取得したいですが「Cross-Origin Read Blocking」

makoto-n

総合スコア436

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/04/21 09:02

編集2019/04/21 14:37

jsでapiからデータを取得したいのですが、
fetchで取得しようと試みてます。
Cross-Origin Read Blocking (CORB) blocked cross-originと警告が出て取得できません。
どう変更すれば取得できますか?

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script> 7 let text = fetch('https://www.gaitameonline.com/rateaj/getrate', {mode: 'cors'}).then(onLoadFunc); 8 console.log(text) 9 </script> 10</head> 11<body> 12 test 13</body> 14</html>

取得したいのはリンク先のjson文字列です。

json

1{"quotes":[{"high":"1.9382","open":"1.9382","bid":"1.9382","currencyPairCode":"GBPNZD","ask":"1.9464","low":"1.9382"}, 2{"high":"83.47","open":"83.47","bid":"83.47","currencyPairCode":"CADJPY","ask":"83.67","low":"83.47"}, 3{"high":"1.8131","open":"1.8131","bid":"1.8131","currencyPairCode":"GBPAUD","ask":"1.8191","low":"1.8131"}, 4{"high":"79.93","open":"79.93","bid":"79.93","currencyPairCode":"AUDJPY","ask":"80.15","low":"79.93"}, 5{"high":"1.0674","open":"1.0674","bid":"1.0674","currencyPairCode":"AUDNZD","ask":"1.0722","low":"1.0674"}, 6{"high":"1.5041","open":"1.5041","bid":"1.5041","currencyPairCode":"EURCAD","ask":"1.5075","low":"1.5041"}, 7{"high":"1.1240","open":"1.1240","bid":"1.1240","currencyPairCode":"EURUSD","ask":"1.1250","low":"1.1240"}, 8{"high":"74.64","open":"74.64","bid":"74.64","currencyPairCode":"NZDJPY","ask":"74.94","low":"74.64"}, 9{"high":"1.3379","open":"1.3379","bid":"1.3379","currencyPairCode":"USDCAD","ask":"1.3403","low":"1.3379"}, 10{"high":"0.8644","open":"0.8644","bid":"0.8644","currencyPairCode":"EURGBP","ask":"0.8660","low":"0.8644"}, 11{"high":"1.2974","open":"1.2974","bid":"1.2974","currencyPairCode":"GBPUSD","ask":"1.2995","low":"1.2974"}, 12{"high":"7.877","open":"7.877","bid":"7.877","currencyPairCode":"ZARJPY","ask":"8.036","low":"7.877"}, 13{"high":"1.1394","open":"1.1394","bid":"1.1394","currencyPairCode":"EURCHF","ask":"1.1413","low":"1.1394"}, 14{"high":"110.17","open":"110.17","bid":"110.17","currencyPairCode":"CHFJPY","ask":"110.44","low":"110.17"}, 15{"high":"0.7144","open":"0.7144","bid":"0.7144","currencyPairCode":"AUDUSD","ask":"0.7161","low":"0.7144"}, 16{"high":"1.0134","open":"1.0134","bid":"1.0134","currencyPairCode":"USDCHF","ask":"1.0158","low":"1.0134"}, 17{"high":"125.73","open":"125.73","bid":"125.73","currencyPairCode":"EURJPY","ask":"125.94","low":"125.73"}, 18{"high":"1.3157","open":"1.3157","bid":"1.3157","currencyPairCode":"GBPCHF","ask":"1.3196","low":"1.3157"}, 19{"high":"1.6782","open":"1.6782","bid":"1.6782","currencyPairCode":"EURNZD","ask":"1.6849","low":"1.6782"}, 20{"high":"0.6671","open":"0.6671","bid":"0.6671","currencyPairCode":"NZDUSD","ask":"0.6695","low":"0.6671"}, 21{"high":"111.85","open":"111.85","bid":"111.85","currencyPairCode":"USDJPY","ask":"111.97","low":"111.85"}, 22{"high":"1.5699","open":"1.5699","bid":"1.5699","currencyPairCode":"EURAUD","ask":"1.5728","low":"1.5699"}, 23{"high":"0.7243","open":"0.7243","bid":"0.7243","currencyPairCode":"AUDCHF","ask":"0.7271","low":"0.7243"}, 24{"high":"145.17","open":"145.17","bid":"145.17","currencyPairCode":"GBPJPY","ask":"145.61","low":"145.17"}]}

追加画像****************************************
corb

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/04/21 09:06

「取得できない」と書いていながら「取得したJSON」と書いてあって、質問の意味が不明なのですが。
m.ts10806

2019/04/21 09:19

クロスドメイン(CORS) について一度調べて概念を理解されたほうが良いかもしれません。何か調べたことや試したことはありますか?
makoto-n

2019/04/21 13:35

CORS、初めて閲覧しています。 これが最初に現れたときにとりあえずググって見つけてきた対処方法が {mode: 'cors'} を記述することだったのですが、解決していません。 調べているとレスポンスとかリクエストが異なると出るとか広告に出る、jQueryが古ければ‥‥と情報が煩雑になっていてわかっていません。
m.ts10806

2019/04/21 13:47

ちなみにこのhtml、ローカルファイルをそのままブラウザにドロップするなどして利用していませんか?
makoto-n

2019/04/21 14:14

ブラウザにドロップ、? 開発環境でしょうか? ローカル環境で、htmlファイルをクロームで確認しています。
m.ts10806

2019/04/21 14:17

ということは、ブラウザに表示されているURLはhttp://ではなくfile://ですよね?CORSをとりあえず解消するにはhttp://からアクセスさせる必要がありますので、WindowsでしたらXAMPPなど入れてローカルWebサーバー立ててやってみてください。
makoto-n

2019/04/21 14:35

失礼しました。 MAMPを立ち上げ、localhost/api.htmlで確認しています。 コンソールには追加画像のエラーが表示されます。
Lhankor_Mhy

2019/04/22 01:29

{mode: 'cors'} は、CORSにしたがってリクエストする、というものですから、CORSの制限を無効にするものではないですよ。
guest

回答1

0

ベストアンサー

CORSのエラーが返るということはサービス側が無条件で情報を開示していないということ
それを無理やり読み込もうとするのは公開していないデータに不正にアクセスするという
ルール違反なので場合によっては訴えられる可能性があることをまず認識すべき

その上で、先方に確認し他サイトからのアクセスについて問題ないという明確な回答を得られたなら
先方にapiの仕様を変更してもらうこと(まぁそこまで優しい人は少ないだろうから)
無理ならご自身でサーバーサイドプログラムで他サイトのapi用の受口をつくり
そこを経由してデータを得ることです

投稿2019/04/22 03:22

yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makoto-n

2019/04/22 06:56

なるほど ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問