Sha256: 4d2d603eaac3e50695c75ade13b9a172136388d24a4f52a584250e0529d92788
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
require "manifold/version" module Manifold class Config attr_accessor :expose, :accept def initialize @expose = [] @accept = [] end end def self.config @config ||= Config.new end class Middleware def initialize(app) @app = app end def call(env) if preflight?(env) env['HTTP_ORIGIN'] = 'file://' if env['HTTP_ORIGIN'] == 'null' env['HTTP_ORIGIN'] ||= env['HTTP_X_ORIGIN'] headers = cors_headers(env) headers['Content-Type'] = 'text/plain' [200, headers, []] else status, headers, body = @app.call env headers['Access-Control-Allow-Origin'] = "*" [status, headers, body] end end def cors_headers(env) headers = {} headers['Access-Control-Allow-Origin'] = "*" headers['Access-Control-Allow-Methods'] = env['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] headers['Access-Control-Allow-Headers'] = [ env['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'], Manifold.config.accept, 'Authorization' ].compact.join(', ') if Manifold.config.expose headers['Access-Control-Expose-Headers'] = Manifold.config.expose.join(', ') end headers['Access-Control-Allow-Credentials'] = "true" headers['Access-Control-Max-Age'] = "1728000" headers end def preflight?(env) env['REQUEST_METHOD'] == "OPTIONS" && env['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] && env['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'] end end end if defined? Rails require 'manifold/railtie' endnever
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
manifold-1.0.0 | lib/manifold.rb |