2023-05-11 Rails Controller層でCORSヘッダ付与 / crossorigin属性
Rails Controller層でCORSヘッダ付与
特定のControllerでCORSヘッダを制御したくなった。
こんな感じでかけた。
class OptionsRequestController < ApplicationController
before_action :set_cors_header
private
def set_cors_header
response.headers['Access-Control-Allow-Origin'] = '*' # or 特定アクセス元FQDNを書く
response.headers['Access-Control-Allow-Credentials'] = true
# 必要に応じて下記も設定する
# response.headers['Access-Control-Allow-Headers'] = 'Foo,Bar'
# response.headers['Access-Control-Allow-Methods'] = 'X,Y,Z'
end
end
参考
crossorigin属性
crossorigin 属性は、
<audio>
,<img>
,<link>
,<script>
,<video>
の各要素で有効であり、 CORS への対応を提供し、したがって要素が読み取るデータのために CORS リクエストの構成を有効にします。
HTML 属性: crossorigin - HTML: HyperText Markup Language | MDN
値 | 説明 |
---|---|
anonymous | リクエストはCORSヘッダーを使用し、資格情報フラグには’same-origin’が設定されます。宛先が同一オリジンでない限り、クッキー、クライアントサイドSSL証明書、HTTP認証によるユーザー資格情報の交換は行われません。 |
use-credentials | リクエストはCORSヘッダーを使用し、資格情報フラグには’include’が設定され、ユーザー資格情報は常に含まれます。 |
”” | crossoriginまたはcrossorigin=”“のように属性に空の値を設定すると、anonymousと同じになります。 |
不正なキーワードや空文字列を指定すると、 anonymous が指定されたものと同じように扱われます。