Wildcard CORS em RAILS

Procurei uma solução fácil para uma resposta CORS curinga no Rails.

Encontrei duas maneiras de fazer isso.
Tem aquela joia de rack-cors idiota, que não funcionou de jeito nenhum (uso de middleware, insira antes, depois …).
E você pode construir uma combinação de before_filter (para os cabeçalhos), uma ação real em seu controlador (sem conteúdo) que é chamada por uma rota.

Não consegui encontrar uma solução simples para cair em minhas rotas. Lembrei-me de que routes.rb pode executar aplicativos RACK, tentei pesquisar por “rack proc cors routes.rb”. Nada. Então eu tive que fazer isso sozinho.

Aqui vamos nós:

if Rails.env.development?
match
"/your/url" => proc { |env| [
200,
{
"Content-Type" => 'text/plain',
"Access-Control-Allow-Origin" => '*',
"Access-Control-Allow-Methods" => %w{GET POST PUT DELETE}.join(","),
"Access-Control-Allow-Headers" => %w{Origin Accept Content-Type X-Requested-With X-CSRF-Token}.join(",")
},
["Hello, world"]
]}, via: [:options]
end

Basta substituir por sua rota / url existente que deve suportar a chamada [OPÇÕES] para a solicitação CORS. Você também pode usar urls curinga como ‘/ seu / *’. A rota está envolvida em Rails.env.development? por isso nunca vaza na produção 🙂match "/your/url"

Eu tinha algum conteúdo JS estático em 0.0.0.0:4567 e precisava chamar meu aplicativo Rails em 0.0.0.0:3000. Tão fácil encontrar um problema CORS.

Aproveitar.