2014-04-22 57 views
9

我更新了我的rails應用程序到Rails 4.1並開始獲取ActionController :: InvalidCrossOriginRequest異常。我發現bing機器人主動抓取我動態生成的JavaScript文件。如何避免ActionController :: InvalidCrossOriginRequest異常?

我認爲這是正確的Rails引發這個異常,因爲直接調用JavaScript,但我的日誌充滿了這個異常。

有沒有辦法避免機器人在不關閉csrf保護的情況下引發此異常?

我的控制器看起來像這樣。

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 

回答

4

爲了增加J-H的答案,假設你需要一些幫助CORS,你應該知道,每個主機使用CORS policy來確定誰可以(也不能)直接訪問他們的服務器

您的錯誤基本上是因爲您的服務器的CORS策略仍然默認爲「拒絕」每個直接的XHR訪問。解決這個問題的方法是確定您的服務器上endpoints這將是可供外部資源

這種事要做到這一點是使用rack-cors gem的建議,J-H :)

+5

在我的情況也是最好的方式這是由於谷歌機器人,殭屍和pinterest。但爲什麼所有的機器人都試圖直接訪問js文件?並根據上述創業板將有助於允許。但如果我不想允許呢? –