2013-08-13 11 views
5

Ruby on Railsテクノロジの別のアプリケーションからこのメソッドを呼び出してアプリケーションの応答を取得したいが、ここでクロスサイトスクリプティングの問題がある。だから、私はこの問題を解決することができますそれは偉大になる私を助けてください。Ruby on Railsの別のアプリケーションから1つのアプリケーションでメソッドを呼び出す方法

http://video_tok.com/courses/get_course

def get_course 
    @course = Course.find(params[:id]) 
end 

今私はedupdu.comドメインに

http://edupdu.com/call_course_method

def call_course_method 
    @course = redirect_to "http://video_tak.com/courses/get_course/1" 
end 

を実行しているこのアプリケーションからこの上記のメソッドをコールしたいが、それはvideo_takにリダイレクトされます.comアプリケーション。 私はget_courseメソッドを呼び出し、他のサイトにリダイレクトせずに@courseオブジェクトを内部的に取得したいと考えています。

ありがとうございます。

+0

私はあなたがそれをしたいとは思わない。 – sevenseacat

+0

JSON(P)経由でコースを取得できました。 – Stefan

答えて

3

クロスドメインAJAXは確かに問題ですが、それは解決できませんでした。あなたがそのようなJSONレスポンスとしてコースのオブジェクトを返すことができ、あなたのget_course方法で:

render json: @course 

そこから、あなたにここでは、JavaScript(AJAX)を介してコースを取得する可能性がどちらかは、発行することにより、JSONPやRailsの内側を使用する必要がありますHTTP GETリクエスト。 JSONP

  1. AJAXは、JavaScriptプログラムが別のドメイン内のサーバからデータを要求する方法を提供するための通信技術であるJSONP(パディングとJSON)、があります。 のドキュメントを参照してjQuery.getJSON()を探し、JSONPセクションまでスクロールダウンします。

    (サーバ側APIは によって定義されるような、または類似の)URLは文字列"callback=?"が含まれている場合、要求は代わりJSONPとして扱われます。詳細については、jsonpデータタイプの の説明を$.ajax()に表示してください。

  2. HTTP GETリクエスト

    は単にNet::HTTPクラスを使用します。あなたはあなたのドメインオブジェクトにJSONを変換するために、あなたのモデルのための方法を提供する場合、あなたはそこからそれを取ることができ

    require 'net/http' 
    require 'json' 
    
    url = URI.parse('http://video_tak.com/courses/get_course/1') 
    req = Net::HTTP::Get.new(url.to_s) 
    res = Net::HTTP.start(url.host, url.port) do |http| 
        http.request(req) 
    end 
    course_json = JSON.parse(res.body) 
    

    を。


RPC

私はそれを省略したくない、この少なくともお勧めしますが、あなたはまた、別のRubyのプロセス間のメソッドを呼び出すためにRPCを使用することができます。いくつかのリモートプロシージャコール(RPC)ライブラリがあります。Rubyの標準ライブラリはDRbを提供していますが、Ruby on Railsに基づいて実装もありますが、あなたはXML-RPCプロトコルまたはあなたはおそらく見つけるjson-rpcj

とJSONを使用して、代替のプロトコルに基づいたRPCを実装することができます例えばrails-xmlrpc宝石Rails RPCを検索するとさらに多くの図書館があります。選択したライブラリから、具体的な解決方法が異なります。

関連する問題