質問内容
現在Ruby on RailsでWebアプリケーションを作成しています。
その際、クライアント側からJavaScriptでAPIを叩きたいのですが
console
1Access to fetch at 'API側のURL' from origin 'クライアント側のURL' 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.
と言うエラーが発生しました。
クライアント側のスクリプトコードは以下の通りです(一部抜粋)
index.html.erb
1<script> 2 async function postData(url = '', data = {}) { 3 const response = await fetch(url, { 4 method: 'POST', 5 headers: { 6 'Content-Type': 'application/json' 7 }, 8 body: JSON.stringify({ data1: "data1", data2: "data2" }) 9 }) 10 return response.json(); 11 } 12 postData('API側のURL') 13 .then(data => { 14 console.log(data); 15 }); 16</script>
調べたこと
エラー内容を調べたところCORSポリシーによるエラーでHTTPヘッダーを変更する必要があることがわかりました。
できていないこと
HTTPヘッダーを変更する具体的な手立て・クライアントかAPI側どちらのヘッダを変更する必要があるのか と言った点がわからない状態です。
これらについてお教えいただけますと幸いです
実行環境等
クライアント側・・・ Ruby on Rails 5.2
APIサーバ側・・・ Node.js, Express
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 05:38