2014-04-22 20 views
9

Raylarım uygulamasını Rails 4.1'e güncelledim ve ActionController :: InvalidCrossOriginRequest istisnası almaya başladım. Dinamik olarak oluşturulmuş javascript dosyasını aktif olarak taradığım bing botlarını buldum.Nasıl davranılır ActionController :: InvalidCrossOriginRequest exception?

Javascript doğrudan çağrıldığı için rayların bu istisnayı artırmasının doğru olduğunu düşünüyorum, ancak günlüğüm bu istisna ile doldurulur.

Csrf korumasını kapatmadan bu istisnayı yükselterek botlardan kaçınmanın bir yolu var mı?

Denetleyicim şunun gibi görünüyor.

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 

cevap

4

J-H 'ın cevabı eklemek için ve CORS ile yardıma ihtiyacın varsayarak, her konak bir kullanır bilmeli CORS policy Sunucularına kimlerin erişebileceğini (giremiyor) belirleyebilirsiniz

Hatanız, sunucunuzun CORS politikasının hala her doğrudan XHR erişimini "reddetmesi" nedeniyle varsayılan olarak ayarlandığından kaynaklanmaktadır. Bu etrafında yolu dış kaynaklar

Ayrıca Benim durumumda J-H :)

+5

tarafından tavsiye edildiği bu, rack-cors gem kullanmaktır yapmanın en iyi yolu olur sunulacak sunucu üzerinde endpoints belirlemektir google bot, bing bot ve pinterest nedeniyle oluyor. Ama neden tüm botlar doğrudan js dosyalarına erişmeye çalışıyor? Ve yukarıdaki taşa göre izin vermeye yardımcı olacaktır. Ama ya izin vermek istemiyorsam? –