2014-04-22 4 views
9

Ho aggiornato la mia app di rotaie a Rails 4.1 e ho iniziato a ricevere l'eccezione ActionController :: InvalidCrossOriginRequest. Ho trovato che i bing bot attivamente eseguono la scansione del mio file javascript generato dinamicamente.Come evitare l'eccezione ActionController :: InvalidCrossOriginRequest?

Penso che sia corretto che i binari sollevino questa eccezione poiché javascript è chiamato direttamente, ma il mio registro è pieno di questa eccezione.

C'è un modo per evitare che i bot sollevino questa eccezione senza disattivare la protezione csrf?

Il mio controller si presenta così.

class ListsController < ApplicationController 
    before_filter :authenticate_user! 

    def add 
    @list = List.find(params[:id]) 
    respond_to do |format| 
     format.js { render 'add' } 
     format.html { redirect_to list_path(@list) } 
    end 
    end 

end 

risposta

4

Per aggiungere al J-H s' risposta, e supponendo che hai bisogno di aiuto con CORS, si dovrebbe sapere che ogni host utilizza un CORS policy per determinare chi può (e non può) accedere direttamente al proprio server

Il tuo errore è in pratica perché il criterio CORS del tuo server è ancora impostato in modo predefinito per "negare" ogni accesso XHR diretto. Il modo per aggirare questo è quello di determinare il endpoints sul vostro server che sarà disponibile per le risorse esterne

Succede il modo migliore per farlo è quello di utilizzare la rack-cors gem, come raccomandato da J-H :)

+5

Nel mio caso anche sta accadendo a causa di Google Bot, Bing Bot e Pinterest. Ma perché tutti i bot stanno provando ad accedere direttamente ai file js? E come per la gemma sopra aiuterà a permettere. Ma cosa succede se non voglio permettere? –