Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加上「;“访问控制允许来源”;Ruby中API响应的头_Ruby_Sinatra - Fatal编程技术网

如何加上「;“访问控制允许来源”;Ruby中API响应的头

如何加上「;“访问控制允许来源”;Ruby中API响应的头,ruby,sinatra,Ruby,Sinatra,我正在面试一个前端开发人员的工作,并得到了一个编码测试来构建一个简单的前端界面。我得到了服务器,它是用Ruby(2.1.3)编写的,有3个端点,我将在前端客户端中使用它们。我对Ruby没有任何经验,但我按照他们的指示设置了服务器,它似乎可以工作——我从所有端点得到响应。问题是我的客户端应用程序没有收到任何响应,它位于不同的“域”(实际上,它们都只是localhost的不同端口)。他们似乎没有在API上设置“Access Control Allow Origin”标题,但我不想再问他们如何解决这个

我正在面试一个前端开发人员的工作,并得到了一个编码测试来构建一个简单的前端界面。我得到了服务器,它是用Ruby(2.1.3)编写的,有3个端点,我将在前端客户端中使用它们。我对Ruby没有任何经验,但我按照他们的指示设置了服务器,它似乎可以工作——我从所有端点得到响应。问题是我的客户端应用程序没有收到任何响应,它位于不同的“域”(实际上,它们都只是localhost的不同端口)。他们似乎没有在API上设置“Access Control Allow Origin”标题,但我不想再问他们如何解决这个问题,因为我担心这会对我的测试产生不良影响

下面是服务器文件结构,我还包括了一些似乎相关的文件的内容。如果有人想查看其他文件,请发表评论。我相信这对任何认识Ruby的人来说都很简单,但我一点也不知道

D:.
¦   .gitkeep
¦   client.rb
¦   config.ru
¦   foo.sqlite3
¦   Gemfile
¦   Gemfile.lock
¦   Rakefile
¦   README.md
¦
+---app
¦   +---controllers
¦   ¦       api_controller.rb
¦   ¦       application_controller.rb
¦   ¦       not_found_controller.rb
¦   ¦       payments_controller.rb
¦   ¦
¦   +---models
¦   ¦       payment.rb
¦   ¦
¦   +---views
¦           booking.html
¦           confirmation.html
¦
+---config
¦       boot.rb
¦       dispatcher.rb
¦
+---db
¦   ¦   schema.rb
¦   ¦   seeds.rb
¦   ¦
¦   +---migrate
¦           20150331094122_create_payments.rb
¦
+---lib
¦       my_application.rb
¦
+---log
¦       development.log
¦       test.log
¦
+---public
¦   ¦   404.html
¦   ¦   500.html
¦   ¦
¦   +---css
¦           style.css
¦
+---script
¦       console
¦       server
¦
+---spec
¦   ¦   spec_helper.rb
¦   ¦
¦   +---acceptance
¦   ¦       api_endpoint_spec.rb
¦   ¦       not_found_spec.rb
¦   ¦
¦   +---models
¦           payment_spec.rb
¦
+---vendor
    +---libs
            foobar_goodies
boot.rb my_application.rb 应用程序\u controller.rb
Sinatra是一个简单而轻量级的web服务器。一般的想法是,您可以这样编写响应路由:

get '/api' do
 "Hello world"
end
当您向yoursite.com/api发出HTTP GET请求时,您将得到一个“Hello world”作为响应

现在,要添加所需的标题,请执行以下操作:

get '/api' do
  response['Access-Control-Allow-Origin'] = '*'
  "Hello world"
end

Sinatra是一个简单而轻量级的web服务器。一般的想法是,您可以这样编写响应路由:

get '/api' do
 "Hello world"
end
当您向yoursite.com/api发出HTTP GET请求时,您将得到一个“Hello world”作为响应

现在,要添加所需的标题,请执行以下操作:

get '/api' do
  response['Access-Control-Allow-Origin'] = '*'
  "Hello world"
end

正如我提到的,我根本不是一个Ruby开发人员。我确实搜索了Ruby,但没有一个回复对我有任何意义。即使是你提到的问题对我来说也毫无意义,更不用说它似乎是关于西纳特拉的,这对我来说也毫无意义。我需要它为我详细说明,什么命令需要进入什么文件在什么行。如果你不想帮忙,没有人强迫你,但是没有理由居高临下和粗鲁。正如我提到的,我根本不是一个Ruby开发人员。我确实搜索了Ruby,但没有一个回复对我有任何意义。即使是你提到的问题对我来说也毫无意义,更不用说它似乎是关于西纳特拉的,这对我来说也毫无意义。我需要它为我详细说明,什么命令需要进入什么文件在什么行。如果你不想帮忙,没有人强迫你,但是没有理由屈尊和粗鲁。谢谢你的清晰、简洁和非常有用的回答!谢谢你的清晰、简洁和非常有用的回答!
require 'spec_helper'
require 'models/payment'

describe 'API Endpoint' do
  it 'responds with a JSON welcoming message' do
    get '/api'

    expect(last_response.status).to eq(200)
    expect(last_response.body).to eq('{"message":"Hello Developer"}')
  end

  it 'returns all the stored payments' do
    Payment.all.map(&:delete)
    Payment.new(reference: 'any reference', amount: 10000).save

    get '/api/bookings'

    expect(last_response.status).to eq(200)
    expect(last_response.body).to eq("{\"bookings\":[{\"reference\":\"any reference\",\"amount\":10000,\"country_from\":null,\"sender_full_name\":null,\"sender_address\":null,\"school\":null,\"currency_from\":null,\"student_id\":null,\"email\":null}]}")
  end

  def app
    MyApplication::Dispatcher.new
  end
end
get '/api' do
 "Hello world"
end
get '/api' do
  response['Access-Control-Allow-Origin'] = '*'
  "Hello world"
end