1234567891011121314151617181920212223242526272829303132333435363738394041 |
- module ApplicationController::SetsHeaders
- extend ActiveSupport::Concern
- included do
- before_action :cors_preflight_check
- after_action :set_access_control_headers
- end
- private
- # For all responses in this controller, return the CORS access control headers.
- def set_access_control_headers
- return if @_auth_type != 'token_auth' && @_auth_type != 'basic_auth'
- set_access_control_headers_execute
- end
- def set_access_control_headers_execute
- headers['Access-Control-Allow-Origin'] = '*'
- headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE, PATCH, OPTIONS'
- headers['Access-Control-Max-Age'] = '1728000'
- headers['Access-Control-Allow-Headers'] = 'Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Accept-Language'
- end
- # If this is a preflight OPTIONS request, then short-circuit the
- # request, return only the necessary headers and return an empty
- # text/plain.
- def cors_preflight_check
- return true if @_auth_type != 'token_auth' && @_auth_type != 'basic_auth'
- cors_preflight_check_execute
- end
- def cors_preflight_check_execute
- return true if request.method != 'OPTIONS'
- headers['Access-Control-Allow-Origin'] = '*'
- headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE, PATCH, OPTIONS'
- headers['Access-Control-Allow-Headers'] = 'Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Accept-Language'
- headers['Access-Control-Max-Age'] = '1728000'
- render text: '', content_type: 'text/plain'
- false
- end
- end
|