class Pliny::Middleware::CORS
Constants
- ALLOW_HEADERS
- ALLOW_METHODS
- EXPOSE_HEADERS
Public Class Methods
add_additional_header(header)
click to toggle source
# File lib/pliny/middleware/cors.rb, line 13 def self.add_additional_header(header) @@additional_headers << header end
new(app)
click to toggle source
# File lib/pliny/middleware/cors.rb, line 17 def initialize(app) @app = app end
Public Instance Methods
allow_headers()
click to toggle source
# File lib/pliny/middleware/cors.rb, line 41 def allow_headers ALLOW_HEADERS + @@additional_headers end
call(env)
click to toggle source
# File lib/pliny/middleware/cors.rb, line 21 def call(env) # preflight request: render a stub 200 with the CORS headers if cors_request?(env) && env["REQUEST_METHOD"] == "OPTIONS" [200, cors_headers(env), [""]] else status, headers, response = @app.call(env) # regular CORS request: append CORS headers to response if cors_request?(env) headers.merge!(cors_headers(env)) end [status, headers, response] end end
cors_headers(env)
click to toggle source
# File lib/pliny/middleware/cors.rb, line 45 def cors_headers(env) { 'Access-Control-Allow-Origin' => env["HTTP_ORIGIN"], 'Access-Control-Allow-Methods' => ALLOW_METHODS.join(', '), 'Access-Control-Allow-Headers' => allow_headers.join(', '), 'Access-Control-Allow-Credentials' => "true", 'Access-Control-Max-Age' => "1728000", 'Access-Control-Expose-Headers' => EXPOSE_HEADERS.join(', ') } end
cors_request?(env)
click to toggle source
# File lib/pliny/middleware/cors.rb, line 37 def cors_request?(env) env.has_key?("HTTP_ORIGIN") end