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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

CORS

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

API

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

Q&A

解決済

1回答

1919閲覧

Rails API CORS設定に関して 上手く発動していない気がします。POSTMAN等のAPIクライアントで叩けてしまう。

nyako

総合スコア45

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

CORS

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

API

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

0グッド

1クリップ

投稿2021/07/26 19:25

ruby

1# cors.rb 2 3Rails.application.config.middleware.insert_before 0, Rack::Cors do 4 allow do 5 origins 'localhost:3005','https://teratailthanks.com' 6 7 resource '*', 8 headers: :any, 9 methods: [:get, :post, :put, :patch, :delete, :options, :head] 10 end 11end 12

例えば上記のようなCORS設定だったとします。

聞きたいこと

ただlocalhost:3000でローカルサーバーを立ち上げてPostmanにてAPIリクエストをしたところ
エラーも出ずにしっかりと期待されるレスポンスが返ってきてしまいました。
なぜなのでしょうか。。。

宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

CORSは、ブラウザJavaScriptでの挙動を制御するものです。

ブラウザでないツールからや、ブラウザ内でもフォーム遷移する場合など、ブラウザJavaScriptと関係しないアクセスの場合は、CORSヘッダがあろうが何の意味も持ちません。

投稿2021/07/26 22:41

maisumakun

総合スコア145183

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

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

maisumakun

2021/07/26 22:44

https://developer.mozilla.org/ja/docs/Web/HTTP/CORS CORS)は、追加の HTTP ヘッダーを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えるようブラウザーに指示するための仕組みです。 「ブラウザーに指示する」ものである以上、ブラウザ以外には全く無縁です。
maisumakun

2021/07/26 22:48

> 上記の書き方はlocalhost:3005とhttps://teratailthanks.comからしかエンドポイントを叩けないということであっていますでしょうか? 「ブラウザJavaScriptでは」、当該ドメイン以外からAjaxリクエストを行った場合に「結果を得られない」ということです(リクエストを投げてサーバ内で処理する部分まではCORSと関係なく行われます。受け取ったブラウザ側での制限です)。
nyako

2021/07/27 01:12

maisumakun様 いつもありがとうございます! なるほど!完全にOrigin側からのアクセスを遮断するものだと思ってました。 実はフロント側(練習で別の人間が担当)で画像等のファイル送信のPATCHリクエストのときに、断続的にCORSでワイルドカード指定しているはずなのに CORS エラーが発生してしまいます。この場合原因はフロント側にあると仮定できますでしょうか。 corsエラー + net::ERR_FAILED が出ます。 断続的で謎でして。。
maisumakun

2021/07/27 02:00

> この場合原因はフロント側にあると仮定できますでしょうか。 できないです。サーバサイドでキャッシュしていたり、プレフライトに正しく応答していなかったり、のような可能性もあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問