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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

Q&A

解決済

2回答

13038閲覧

Vue.js axios でCORSエラーを解決したい

boniri

総合スコア18

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

0グッド

1クリップ

投稿2021/04/05 17:03

vueでaxiosを使用し、郵便番号検索APIをたたくとCORSのエラーが出る

vue

1<script> 2data() { 3 return { 4 headers: { 5 'Content-Type': 'application/json;charset=UTF-8', 6 'Access-Control-Allow-Origin': '*', 7 } 8 } 9}, 10methods: { 11 axios.get('https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060', this.headers) 12 .then(response => { 13 console.log('status', response.status); 14 console.log('body', response.data); 15 }) 16 .catch(err => { 17 console.log('err', err); 18 }) 19} 20</script>

色々調べていたのですが、上記のやり方で解決されている方が多く、真似してみたのですが、

Access to XMLHttpRequest at 'https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

というエラーが出てしまいます。
おかしいところ、他にも設定しなくてはいけないところがあったら教えていただけますと幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

zipcloudはjsonpしか対応してない。

CORSをなんとかする方法だけ覚えてもなんの意味もない。

jsonpを知らないとJSONPとして出力する際のコールバック関数名。とちゃんと書いてあっても理解できない。
http://zipcloud.ibsnet.co.jp/doc/api
CORSで引っ掛かったらそこから関連する事柄を全部調べる作業が必要。

古くからあるAPIだとブラウザのJSからは対応してないとか対応しててもjsonpだけとかがかなり多い。

投稿2021/04/05 23:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

boniri

2021/04/06 01:12

ご返信いただき、ありがとうございます。 jsonpについて調べ、無事にエラーが解消されました。 解決法だけを調べるのではなく、書いてある単語について調べることが大切であることを痛感しました。
guest

0

エラーメッセージに preflight とありますので、GETリクエストの前に送出される OPTIONSリクエストにヘッダがついていってないのだと思います。
GETの前に次を追加したらどうなるでしょうか。

js

1axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*'

CORSは非常に厄介ですが、表示されるエラーメッセージは親切というか的確に書かれています。一字一句丹念に読んだらヒントがあるはずです。

投稿2021/04/05 18:20

gambaldia

総合スコア266

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

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

boniri

2021/04/06 01:16

ご返信ありがとうございます。 そちらを試したのですが、同じエラーが返ってきてしまいました。 JSONPでデータを取得することで解決いたしました。 ただ、今回はエラー文には答えがありませんでしたが、毎回エラー文をちゃんと読まずに進めてしまう癖があるので、意識して直していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問