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 が指定されたものと同じように扱われます。