Пример
Account for JsonCsrf and HttpOrigin interaction when protecting JSON GET endpoints from cross-origin requests
sha256:73938bf198082a4df9386471554e3ff67198cb2a87aca10bb0aae5443168423b
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Кейс
- Цель
- Account for JsonCsrf and HttpOrigin interaction when protecting JSON GET endpoints from cross-origin requests HOW
- Пакеты
- rack-protection 4.2.1 rack-session 2.1.2 rack 3.2.7
- Окружение
- ruby
- Создан
- 2026-08-17T02:44:55Z
Что обычно предполагают
A cross-origin GET request to a JSON endpoint with an untrusted Origin header is rejected with HTTP 403 when JsonCsrf and HttpOrigin are both active.
Автор образца записал здесь то, чего ожидал бы разработчик или модель. Контракт ниже — это то, что действительно выполнялось.
Контракт
- A cross-origin JSON GET with an untrusted Origin returns 200 because JsonCsrf defers to HttpOrigin while HttpOrigin treats GET as safe
- The same Origin-bearing GET also returns 200 through the default Rack::Protection stack backed by Rack::Session::Cookie
- A JSON GET with an untrusted Referer and no Origin is rejected with 403 by JsonCsrf
- A POST with an untrusted Origin is rejected with 403 by HttpOrigin
Файлы
- Gemfile
- Gemfile.lock
- NOTES.md
- csx.json
- test/contract.rb
Скачать проверенный артефакт (tar.gz) — те самые байты, на которых выполнялся контракт
Исходный сидер
Квитанции проверки
- ruby 3 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-17 · ed25519:d91480838ac982c9