Skip to content

Instantly share code, notes, and snippets.

@sorentwo
Created August 29, 2014 17:18
Show Gist options
  • Select an option

  • Save sorentwo/ba5687af7ab9c26006ea to your computer and use it in GitHub Desktop.

Select an option

Save sorentwo/ba5687af7ab9c26006ea to your computer and use it in GitHub Desktop.
Micro CORS
class CORSHeaders
ACCESS_CONTROL_HEADERS = {
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'OPTIONS,GET,PATCH,PUT,POST,DELETE',
'Access-Control-Expose-Headers' => '',
'Access-Control-Max-Age' => '1728000',
'Content-Type' => 'text/plain'
}.freeze
def initialize(app)
@app = app
end
def call(env)
if env['REQUEST_METHOD'] == 'OPTIONS' and env['HTTP_ACCESS_CONTROL_REQUEST_METHOD']
headers = ACCESS_CONTROL_HEADERS.merge(
'Origin' => env['HTTP_ORIGIN'],
'Access-Control-Request-Method' => env['HTTP_ACCESS_CONTROL_REQUEST_METHOD'],
'Access-Control-Request-Headers' => env['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']
)
[200, headers, []]
else
status, headers, body = @app.call(env)
headers.merge!('Access-Control-Allow-Origin' => '*')
[status, headers, body]
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment