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.
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.