私は、Axiusを使用してYahoo天気APIにajax GETリクエストを行うvuejsコンポーネントを開発中です。プリフライトチェックでアクセス制御チェックが合格しないというCORSエラーが表示されます。Axiosのyahoo天気APIへのリクエストの失敗
しかし、問題なしでjqueries ajaxメソッドを使用して同じエンドポイントにリクエストすることができ、期待されるデータがサービスから返されます。誰がなぜこのような場合があるのか知っていますか?ここで
は私のVUEのコンポーネントからのコードです:
<template>
<div class="tile" id="time-weather">
<div class="date" v-text='this.date'></div>
<div class="time" v-text='this.time'></div>
<div class="temperature" v-text="this.temp"></div>
</div>
</template>
<script>
import moment from 'moment';
export default {
created() {
this.refreshTime();
setInterval(this.refreshTime, 1000);
this.fetchWeather();
},
data() {
return {
date: '',
time: '',
temp: ''
}
},
methods: {
refreshTime() {
this.date = moment().format('ddd DD/MM');
this.time = moment().format('HH:mm:ss');
},
fetchWeather() {
const endpoint = "https://query.yahooapis.com/v1/public/yql?q=select item.condition from weather.forecast where woeid in (select woeid from geo.places(1) where text='Sunderland') and u='c'&format=json";
const yapi = axios.create({
url: endpoint,
method: 'get',
withCredentials: false
});
const response = yapi.request();
console.log(response);
}
}
}
</script>
私はコンソールに取得しています正確なエラーメッセージは次のとおりです。
のXMLHttpRequestが https://query.yahooapis.com/v1/public/yql?q=select%20item.condition%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text=%27Sunderland%27)%20and%20u=%27c%27&format=jsonをロードすることはできません。 プリフライト要求への応答がアクセス制御チェックを通過しません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、オリジン 'http://dashboard.dev'は許可されません。
私が言及したように、同じエンドポイントに対してjQuery.ajax();
を使用してリクエストを行うと、リクエストは問題なく送信されます。
私が紛失していると思われるものがありますが、この問題を解決できないようです。
ご協力いただきますようお願い申し上げます。
乾杯!
を使用して、独自のCORSプロキシを設定することができ
はよろしいですか?与えられたエンドポイントは404を返します。単にそれをcURLでチェックします。 – lukaleli
@jimmyweb httpsへのリンクを編集しました。それでも同じ結果が得られます。 – user2286026
ちょうど今追加された答えを見てください。ブラウザのdevtoolsのネットワークペインに入り、ドキュメントを再読み込みして、そこにプリフライトOPTIONS要求を調べて、ブラウザが送信していることを確認できます。リクエストヘッダー、特に 'Access-Control-Request-Headers'リクエストヘッダーでブラウザの送信を確認する必要があります。これには、Axiosリクエストがリクエストに追加しようとしている(そしてプリフライトが失敗する)カスタムリクエストヘッダの名前が含まれます。おそらくhttps://stackoverflow.com/posts/45849535/editを使って質問を編集/更新し、それらのレスポンスヘッダに貼り付けてください。 – sideshowbarker