rtomayko / rack-cache

Real HTTP Caching for Ruby Web Apps
http://rtomayko.github.io/rack-cache/
Other
822 stars 126 forks source link

Not invalidating the cache for preflight CORS request #93

Closed jamesruston closed 8 years ago

jamesruston commented 10 years ago

When making a CORS (http://www.w3.org/TR/cors/) request, first a preflight OPTIONS request is sent to ensure the request is valid. Once receiving a response from the OPTIONS request the real request is then made (so long as the OPTIONS response confirmed its validity) e.g.

some-origin sends => OPTIONS /foo/bar to some-other-origin some-origin is allowed access to some-other-origin some-origin sends => GET /foo/bar to some-other-origin

Currently the OPTIONS request is invalidating the /foo/bar cache and is rendering the cache useless for cross origin requests, such as using an AngularJS front end with a Sinatra JSON API.

I've put together a simple solution which checks for OPTIONS requests before invalidating the cache. The OPTIONS response isn't cached and is always passed.

grosser commented 8 years ago

manually merged

grosser commented 8 years ago

1.4.0 thx for the patch!