Skip to content

[pull] main from tower-rs:main#20

Merged
barjin merged 3 commits into
apify:mainfrom
tower-rs:main
Jun 1, 2026
Merged

[pull] main from tower-rs:main#20
barjin merged 3 commits into
apify:mainfrom
tower-rs:main

Conversation

@pull

@pull pull Bot commented May 29, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull Bot locked and limited conversation to collaborators May 29, 2026
@pull pull Bot added the ⤵️ pull label May 29, 2026
@pull pull Bot assigned barjin May 29, 2026
@pull pull Bot requested a review from barjin May 29, 2026 16:33
jlizen and others added 2 commits May 29, 2026 22:34
* fix!: handle wildcard * in Accept-Encoding per RFC 9110 §12.5.3

* fix: replace let...else with match for MSRV compatibility
* feat(csrf): add cross-origin protection middleware

Ports the CSRF protection scheme introduced in Go 1.25 (described in
Filippo Valsorda's blog post) as a new optional `csrf` feature. The
middleware combines `Sec-Fetch-Site`, an `Origin` allow-list, and an
`Origin`/`Host` fallback to reject cross-origin state-changing requests
without per-request token state.

* fix(csrf): strip query string from trace log URIs

* feat(csrf): add #[must_use] to Csrf service

* chore(csrf): made example slightly better formatted

* test(csrf): exercise Service::call() flow via oneshot

* chore(csrf): fix style

* refactor(csrf): inline is_exempt as a closure inside verify

* feat(csrf): allow customizing the rejection response

* docs(csrf): document UriExt and TrustedOrigin

* test(csrf): cover custom rejection response on allowed request

* test(csrf): explain why the safe-method check avoids Method::is_safe

* refactor(csrf): match Go with strict byte-level origin comparison

* refactor(csrf): bound with_rejection_response on Clone for clearer errors

* refactor(csrf): make ProtectionError an opaque struct over a kind enum

* refactor(csrf): attach ProtectionError in the service so custom rejections keep it

* fix(csrf): prefer request-target authority over Host header in same-origin check

* style(csrf): rustfmt service.rs
@barjin barjin merged commit 1b7c020 into apify:main Jun 1, 2026
17 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants