Sinatra OPTIONS HTTP-глагол

Поддерживает ли Sinatra HTTP-ключ OPTIONS? Что-то вроде:

options '/' do
  response.headers["Access-Control-Allow-Origin"] = "*"
  response.headers["Access-Control-Allow-Methods"] = "POST"

  halt 200
end

Ответы

Ответ 1

После небольшого взлома мне удалось заставить его работать, используя:

before do
  if request.request_method == 'OPTIONS'
    response.headers["Access-Control-Allow-Origin"] = "*"
    response.headers["Access-Control-Allow-Methods"] = "POST"

    halt 200
  end
end

Edit:

После некоторого изучения этой проблемы я понял, что запрос на PULL включен в GitHub для добавления глагола OPTIONS (https://github.com/sinatra/sinatra/pull/129). Я принял решение и взломал его, используя следующий фрагмент:

configure do
  class << Sinatra::Base
    def options(path, opts={}, &block)
      route 'OPTIONS', path, opts, &block
    end
  end
  Sinatra::Delegator.delegate :options
end

Теперь я могу просто использовать:

options '/' do
  ...
end

Edit:

Запрос на вытягивание должен быть объединен. Больше не нужно взломать.

Ответ 3

Нет, нет. Если вы посмотрите на код GitHub, вы увидите, где указаны глаголы HTTP, а options не является одним из них.