Ho un'API di sola lettura e funziona bene localmente con una configurazione di Vagrant. In diretta sulla mia app di Heroku, ogni richiesta API viene negata a causa di un errore CORS: "Nessuna intestazione Access-Control-Allow-Origin" è presente sulla risorsa richiesta. L'origine "null" non è quindi consentita l'accesso. "Problema CORS utilizzando Grape API e Heroku
Nella classe di base del mio API, ho il seguente per impostare le intestazioni:
module API
class Base < Grape::API
before do
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'GET, OPTIONS'
headers['Access-Control-Request-Method'] = '*'
headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
end
mount API::V1::Base
end
end
ho il sospetto che questo before
chiamata non viene licenziato, se uso una dichiarazione mette all'interno di esso, questa affermazione fa non appare nella mia console con il resto dell'output.
Sono in perdita. Spero che qualcuno abbia qualche esperienza con questo. Grazie.
Modifica: Ho anche seguito Grape's CORS instructions ma ottengo lo stesso risultato.
Successo. Ho usato il rack-cors gemma e la seguente:
#application.rb
config.middleware.use Rack::Cors do
allow do
origins '*'
# location of your API
resource '/api/*', :headers => :any, :methods => [:get, :post, :options, :put]
end
end
Sì, avevo già pubblicato la soluzione di successo nel mio post originale. Grazie. – Stephen
Oh. Ho appena realizzato che la mia risposta copiata da grape docs non includeva il metodo delle opzioni. È aggiornato ora. ([: get,: post,: options,: put] invece di just: get) – Ryanzyy
Basta notare per il framework rails, all'interno di config.ru, aggiungere la riga 'run API :: V1 :: Base' prima della riga' run Rails. application' – yozzz