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

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

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

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

API

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

Q&A

解決済

1回答

3062閲覧

fetchでクライアント側からTwitterAPIを叩いたときに同一生成元エラーが生じる

maskmelon

総合スコア63

CORS

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

API

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

0グッド

1クリップ

投稿2020/10/19 14:57

タイトルの通りです。
エラーメッセージに従って、Access-Control-Allow-Originヘッダを設定したり、modeにcorsを設定したりしてみたのですが、同じエラーが出力されました。

うまく回避する方法はないでしょうか?

ご教授いただけますと幸いです。

js

1fetch('https://api.twitter.com/2/users/by/username/piyo', { 2 method: 'GET', 3 mode: 'cors', 4 headers: { 5 Authorization: hoge, 6 'Access-Control-Allow-Origin': '*', 7 }, 8 }).then(response => { 9 console.log(response.json()); 10 });

error

1Access to fetch at 'https://api.twitter.com/2/users/by/username/piyo' from origin 'http://localhost:3000' 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. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージに従って、Access-Control-Allow-Originヘッダを設定したり

Access-Control-Allow-Originヘッダは、サーバ側が設定するものです。クライアント側でセットしても何の効果もありません。

うまく回避する方法はないでしょうか?

サーバ側が処理を認めない、かつTwitter用のキーを、誰でも見られるWebに置くのは適当ではないので、クライアントサイドJavaScriptだけで対応する方法はありません。

投稿2020/10/20 00:03

maisumakun

総合スコア146018

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

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

maskmelon

2020/10/20 01:24 編集

回答くださりありがとうございます。 ユーザーがfirebase authでTwitterログインした際に取得したアクセストークンを使ってTwitterアカウントのフォロワーの情報を取得するということを実現したいのですが、サーバー側で処理をするとなるとどういった形になるのでしょうか? 度々の質問で恐縮ですが、ご教授頂けるとありがたいです。
maskmelon

2020/10/20 01:29 編集

※追記です サーバー側に中継地点としてAPIを立てて、ユーザーからアクセストークンを受け取ったサーバーが代わりにTwitterAPIを叩くというやり方でデータを取ってくることができたのですが、これはセキュリティ的に問題があるでしょうか? アクセストークン・シークレットはユーザー固有の情報なのでhttp通信でサーバーに送信してよいのか不安です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問