Custom protocols and defining their origin
See original GitHub issueHello there,
I am developing a chrome extension that talks to my website. The extension’s origin is
chrome-extension://bjpcphhoenjjadogjjcelgjnnfgamiog
so I naturally defined
origins "chrome-extension://bjpcphhoenjjadogjjcelgjnnfgamiog"
in Rack::Cors’ configuration.
But it didn’t work. I got a 404 on the OPTIONS request. Weird, I though.
After some digging, I found this piece of code: https://github.com/cyu/rack-cors/blob/42ebe6caa8e85ffa9c8a171bda668ba1acc7a5e6/lib/rack/cors.rb#L256
case n
when Regexp,
/^https?:\/\//,
'file://' then n
when '*' then @public_resources = true; n
else Regexp.compile("^[a-z][a-z0-9.+-]*:\\\/\\\/#{Regexp.quote(n)}$")
end
So unless your protocol is http, https, or file, you are not expected to specify the protocol? I tested it and using origins "bjpcphhoenjjadogjjcelgjnnfgamiog"
worked.
What is the reason to even have that else clause? To me it would make sense to change that code to:
@public_resources = true if n == '*'
n
I guess I’m mostly confused of the origin of that code? It doesn’t seem necessary, isn’t explained in the docs as far as I could see, and it prevents you from using arbitrary protocols as strings.
Thanks!
Issue Analytics
- State:
- Created 8 years ago
- Reactions:1
- Comments:5 (4 by maintainers)
Top GitHub Comments
I’m sorry to bring this up again after two years, but I have lost many hours on a similar problem, but now involving Ionic.
On iOS the Origin header is set to
ionic://localhost
(https://ionicframework.com/docs/faq/cors#ionic-webview-3-x-plugin-on-cordova).Thus using
origins 'ionic://localhost'
led to errors when testing the app on iOS devices.And I can confirm that
origins 'localhost'
works.Is it worth to mention this behaviour for protocols different than http, https or file?
This issue should be fixed with [#225], which is in 2.0.0.rc1