2014-01-20 51 views
0

我在Heroku上運行一個Ruby應用程序。該應用程序返回一個JSON,當我轉到瀏覽器的調試器時可以訪問該JSON。 JSON響應如下模板:POST JSON響應在Ruby中的HTTP請求

rates = { 
    "Aluminium" => price[1], 
    "Copper" => price_cu[1], 
    "Lead" => price_pb[1], 
    "Nickel" => price_ni[1], 
    "Tin" => price_sn[1], 
    "Zinc" => price_zn[1], 
} 

樣本響應:

{ 
    "Aluminium":"1765.50", 
    "Copper":"7379.00", 
    "Lead":"2175.00", 
    "Nickel":"14590.00", 
    "Tin":"22375.00", 
    "Zinc":"2067.00" 
} 

我寫了實現這一目標的代碼是:

Test.rb

class FooRunner 
    def self.run! 
     #calculations_for_rates 
     rates.to_json 
    end 
if __FILE__ == $0 
    puts FooRunner.run! 
end 

應用.rb

require 'sinatra' 
require './test.rb' 

result = FooRunner.run! 
File.open('output.json','w') do |f| 
     f.write result 
end 

content_type :json 
result 

當我嘗試使用

$.getJSON('app-url',function(data){ 
    console.log(data); 
}); 

它給了我一個錯誤說訪問此鏈接

No 'Access-Control-Allow-Origin' header is present on the requested resource.

有我的方式直接訪問通過編寫JSON JSON響應到HTTP響應?

+0

[Sinatra access-control-allow-origin for sinatra公用文件夾]的可能重複(http://stackoverflow.com/questions/7109971/sinatra-access-control-allow-origin-for-sinatra-public-folder ) – TheDude

回答

1

所以我猜你正在提出get請求的頁面並不是由Sinatra提供的。您可以將標題Access-Control-Allow-Origin: *添加到該請求以使其正常工作。

This answer說明介紹如何使用response['Access-Control-Allow-Origin'] = *headers("Access-Control-Allow-Origin" => "*")

這個問題的答案還列出this blog post在西納特拉參考,跨源資源共享去做。