Skip to content

Use the requested host for LFS links#36242

Merged
wxiaoguang merged 4 commits intogo-gitea:mainfrom
sollyu:feature/root-url-lfs
Dec 26, 2025
Merged

Use the requested host for LFS links#36242
wxiaoguang merged 4 commits intogo-gitea:mainfrom
sollyu:feature/root-url-lfs

Conversation

@sollyu
Copy link
Copy Markdown
Contributor

@sollyu sollyu commented Dec 25, 2025

Use the dynamically parsed host in the request for LFS links, but not use the hard-coded AppURL.

Make LFS server support multi-domain or run Gitea behind a reverse-proxy with different ROOT_URL.

…otocol" errors

When the application is served at the root (AppURL == "/"), git-lfs can treat
relative LFS object links as missing a protocol and fail operations. Use the
request-inferred host (httplib.GuessCurrentHostURL) to build absolute download,
upload and verify links when available. Preserve existing behavior of using
setting.AppURL in other cases and keep signed storage URLs intact.

Fixes: go-gitea#19345
@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Dec 25, 2025
@github-actions github-actions bot added the modifies/go Pull requests that update Go code label Dec 25, 2025
@wxiaoguang
Copy link
Copy Markdown
Contributor

Remove all if setting.AppURL == "/" && rc.HostURL != "" check, always use the result of GuessCurrentHostURL

@sollyu
Copy link
Copy Markdown
Contributor Author

sollyu commented Dec 26, 2025

Done. Removed the if setting.AppURL == "/" && rc.HostURL != "" check as suggested and now always use GuessCurrentHostURL()for LFS URLs.

已按要求修改。移除了 if setting.AppURL == "/" && rc.HostURL != "" 检查,现始终使用 GuessCurrentHostURL()生成 LFS URL。

@wxiaoguang wxiaoguang changed the title lfs: return absolute LFS URLs when AppURL is '/' to avoid "missing protocol" errors Use the requested host for LFS links Dec 26, 2025
@wxiaoguang wxiaoguang added type/bug backport/v1.25 This PR should be backported to Gitea 1.25 labels Dec 26, 2025
@wxiaoguang wxiaoguang added this to the 1.26.0 milestone Dec 26, 2025
@GiteaBot GiteaBot added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels Dec 26, 2025
@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels Dec 26, 2025
@wxiaoguang wxiaoguang enabled auto-merge (squash) December 26, 2025 04:19
@wxiaoguang wxiaoguang merged commit 64fcf84 into go-gitea:main Dec 26, 2025
24 checks passed
GiteaBot pushed a commit to GiteaBot/gitea that referenced this pull request Dec 27, 2025
Use the dynamically parsed host in the request for LFS links, but not
use the hard-coded AppURL.

Make LFS server support multi-domain or run Gitea behind a reverse-proxy
with different ROOT_URL.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
@GiteaBot GiteaBot added the backport/done All backports for this PR have been created label Dec 27, 2025
wxiaoguang added a commit that referenced this pull request Dec 27, 2025
Backport #36242 by sollyu

Co-authored-by: sollyu <43105186+sollyu@users.noreply.github.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
zjjhot added a commit to zjjhot/gitea that referenced this pull request Dec 29, 2025
* giteaofficial/main:
  [skip ci] Updated translations via Crowdin
  Use gitrepo's push function (go-gitea#36245)
  Support closing keywords with URL references (go-gitea#36221)
  Add an option to automatically verify SSH keys from LDAP (go-gitea#35927)
  remove nolint (go-gitea#36252)
  Use the requested host for LFS links (go-gitea#36242)
chudnyi pushed a commit to integratop/helm-gitea-mirror that referenced this pull request Mar 25, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [go-gitea/gitea](https://github.com/go-gitea/gitea) | patch | `1.25.3` -> `1.25.4` |

---

### Release Notes

<details>
<summary>go-gitea/gitea (go-gitea/gitea)</summary>

### [`v1.25.4`](https://github.com/go-gitea/gitea/releases/tag/v1.25.4)

[Compare Source](go-gitea/gitea@v1.25.3...v1.25.4)

- SECURITY
  - Release attachments must belong to the intended repo ([#&#8203;36347](go-gitea/gitea#36347)) ([#&#8203;36375](go-gitea/gitea#36375))
  - Fix permission check on org project operations ([#&#8203;36318](go-gitea/gitea#36318)) ([#&#8203;36373](go-gitea/gitea#36373))
  - Clean watches when make a repository private and check permission when send release emails ([#&#8203;36319](go-gitea/gitea#36319)) ([#&#8203;36370](go-gitea/gitea#36370))
  - Add more check for stopwatch read or list ([#&#8203;36340](go-gitea/gitea#36340)) ([#&#8203;36368](go-gitea/gitea#36368))
  - Fix openid setting check ([#&#8203;36346](go-gitea/gitea#36346)) ([#&#8203;36361](go-gitea/gitea#36361))
  - Fix cancel auto merge bug ([#&#8203;36341](go-gitea/gitea#36341)) ([#&#8203;36356](go-gitea/gitea#36356))
  - Fix delete attachment check ([#&#8203;36320](go-gitea/gitea#36320)) ([#&#8203;36355](go-gitea/gitea#36355))
  - LFS locks must belong to the intended repo ([#&#8203;36344](go-gitea/gitea#36344)) ([#&#8203;36349](go-gitea/gitea#36349))
  - Fix bug on notification read ([#&#8203;36339](go-gitea/gitea#36339)) [#&#8203;36387](go-gitea/gitea#36387)

- ENHANCEMENTS
  - Add more routes to the "expensive" list ([#&#8203;36290](go-gitea/gitea#36290))
  - Make "commit statuses" API accept slashes in "ref" ([#&#8203;36264](go-gitea/gitea#36264)) ([#&#8203;36275](go-gitea/gitea#36275))

- BUGFIXES
  - Fix markdown newline handling during IME composition ([#&#8203;36421](go-gitea/gitea#36421)) [#&#8203;36424](go-gitea/gitea#36424)
  - Fix missing repository id when migrating release attachments ([#&#8203;36389](go-gitea/gitea#36389))
  - Fix bug when compare in the pull request ([#&#8203;36363](go-gitea/gitea#36363)) ([#&#8203;36372](go-gitea/gitea#36372))
  - Fix incorrect text content detection ([#&#8203;36364](go-gitea/gitea#36364)) ([#&#8203;36369](go-gitea/gitea#36369))
  - Fill missing `has_code` in repository api ([#&#8203;36338](go-gitea/gitea#36338)) ([#&#8203;36359](go-gitea/gitea#36359))
  - Fix notifications pagination query parameters ([#&#8203;36351](go-gitea/gitea#36351)) ([#&#8203;36358](go-gitea/gitea#36358))
  - Fix some trivial problems ([#&#8203;36336](go-gitea/gitea#36336)) ([#&#8203;36337](go-gitea/gitea#36337))
  - Prevent panic when GitLab release has more links than sources ([#&#8203;36295](go-gitea/gitea#36295)) ([#&#8203;36305](go-gitea/gitea#36305))
  - Fix stats bug when syncing release ([#&#8203;36285](go-gitea/gitea#36285)) ([#&#8203;36294](go-gitea/gitea#36294))
  - Always honor user's choice for "delete branch after merge" ([#&#8203;36281](go-gitea/gitea#36281)) ([#&#8203;36286](go-gitea/gitea#36286))
  - Use the requested host for LFS links ([#&#8203;36242](go-gitea/gitea#36242)) ([#&#8203;36258](go-gitea/gitea#36258))
  - Fix panic when get editor config file ([#&#8203;36241](go-gitea/gitea#36241)) ([#&#8203;36247](go-gitea/gitea#36247))
  - Fix regression in writing authorized principals ([#&#8203;36213](go-gitea/gitea#36213)) ([#&#8203;36218](go-gitea/gitea#36218))
  - Fix WebAuthn error checking ([#&#8203;36219](go-gitea/gitea#36219)) ([#&#8203;36235](go-gitea/gitea#36235))

Instances on **[Gitea Cloud](https://cloud.gitea.com)** will be automatically upgraded to this version during the specified maintenance window.

</details>

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xOC4xIiwidXBkYXRlZEluVmVyIjoiNDEuMTguMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsia2luZC9kZXBlbmRlbmN5Il19-->

Reviewed-on: https://gitea.com/gitea/helm-gitea/pulls/1012
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
@go-gitea go-gitea locked as resolved and limited conversation to collaborators Mar 26, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

backport/done All backports for this PR have been created backport/v1.25 This PR should be backported to Gitea 1.25 lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. modifies/go Pull requests that update Go code type/bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants