Приложение Sinatra на Heroku отвечает «Запрещено», если я перехожу по ссылкам

Я создал небольшое приложение Sinatra и использую Puma для его запуска. Я развернул свое приложение на Heroku, и все работает нормально, но если я перехожу по внешней ссылке на свое приложение, я получаю ответ Forbidden. Откуда это?

Приложение определяет только один метод HTTP:

require 'sinatra'

get '/' do
  headers 'Content-Type' => 'application/json'
  body 'Hello World'
end

Например, переход по https://contactsampleprovider.herokuapp.com/ приведет к Forbidden, но ввод URL-адреса вручную в браузер работает нормально.

Если я пропущу вызов headers, все будет работать как положено.


person Malte Schmitz    schedule 20.10.2015    source источник
comment
Если это настоящие пользовательские данные, пожалуйста, удалите их как можно скорее.   -  person yez    schedule 21.10.2015
comment
@yez: Нет, конечно. Вся цель приложения состоит в том, чтобы случайным образом генерировать тестовые данные.   -  person Malte Schmitz    schedule 21.10.2015
comment
Хорошо, это отличная новость.   -  person yez    schedule 21.10.2015


Ответы (1)


Это функция защиты Rack, которая, по-видимому, включается автоматически, если вы установите тип содержимого JSON. Его можно отключить с помощью

set :protection, :except => [:json_csrf]

как описано, например, в этом вопросе о защите Sinatra и Rack.

person Malte Schmitz    schedule 20.10.2015