mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-22 12:54:53 -05:00
Support CORS headers to git smart http protocol (#5719)
This commit is contained in:
parent
5a081c7a80
commit
270fa6d63b
4 changed files with 38 additions and 18 deletions
|
@ -31,6 +31,9 @@ PULL_REQUEST_QUEUE_LENGTH = 1000
|
||||||
PREFERRED_LICENSES = Apache License 2.0,MIT License
|
PREFERRED_LICENSES = Apache License 2.0,MIT License
|
||||||
; Disable the ability to interact with repositories using the HTTP protocol
|
; Disable the ability to interact with repositories using the HTTP protocol
|
||||||
DISABLE_HTTP_GIT = false
|
DISABLE_HTTP_GIT = false
|
||||||
|
; Value for Access-Control-Allow-Origin header, default is not to present
|
||||||
|
; WARNING: This maybe harmful to you website if you do not give it a right value.
|
||||||
|
ACCESS_CONTROL_ALLOW_ORIGIN =
|
||||||
; Force ssh:// clone url instead of scp-style uri when default SSH port is used
|
; Force ssh:// clone url instead of scp-style uri when default SSH port is used
|
||||||
USE_COMPAT_SSH_URI = false
|
USE_COMPAT_SSH_URI = false
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,9 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
|
||||||
HTTP protocol.
|
HTTP protocol.
|
||||||
- `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when
|
- `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when
|
||||||
default SSH port is used.
|
default SSH port is used.
|
||||||
|
- `ACCESS_CONTROL_ALLOW_ORIGIN`: **\<empty\>**: Value for Access-Control-Allow-Origin header,
|
||||||
|
default is not to present. **WARNING**: This maybe harmful to you website if you do not
|
||||||
|
give it a right value.
|
||||||
|
|
||||||
### Repository - Pull Request (`repository.pull-request`)
|
### Repository - Pull Request (`repository.pull-request`)
|
||||||
- `WORK_IN_PROGRESS_PREFIXES`: **WIP:,\[WIP\]**: List of prefixes used in Pull Request
|
- `WORK_IN_PROGRESS_PREFIXES`: **WIP:,\[WIP\]**: List of prefixes used in Pull Request
|
||||||
|
|
|
@ -201,15 +201,16 @@ var (
|
||||||
|
|
||||||
// Repository settings
|
// Repository settings
|
||||||
Repository = struct {
|
Repository = struct {
|
||||||
AnsiCharset string
|
AnsiCharset string
|
||||||
ForcePrivate bool
|
ForcePrivate bool
|
||||||
DefaultPrivate string
|
DefaultPrivate string
|
||||||
MaxCreationLimit int
|
MaxCreationLimit int
|
||||||
MirrorQueueLength int
|
MirrorQueueLength int
|
||||||
PullRequestQueueLength int
|
PullRequestQueueLength int
|
||||||
PreferredLicenses []string
|
PreferredLicenses []string
|
||||||
DisableHTTPGit bool
|
DisableHTTPGit bool
|
||||||
UseCompatSSHURI bool
|
AccessControlAllowOrigin string
|
||||||
|
UseCompatSSHURI bool
|
||||||
|
|
||||||
// Repository editor settings
|
// Repository editor settings
|
||||||
Editor struct {
|
Editor struct {
|
||||||
|
@ -237,15 +238,16 @@ var (
|
||||||
WorkInProgressPrefixes []string
|
WorkInProgressPrefixes []string
|
||||||
} `ini:"repository.pull-request"`
|
} `ini:"repository.pull-request"`
|
||||||
}{
|
}{
|
||||||
AnsiCharset: "",
|
AnsiCharset: "",
|
||||||
ForcePrivate: false,
|
ForcePrivate: false,
|
||||||
DefaultPrivate: RepoCreatingLastUserVisibility,
|
DefaultPrivate: RepoCreatingLastUserVisibility,
|
||||||
MaxCreationLimit: -1,
|
MaxCreationLimit: -1,
|
||||||
MirrorQueueLength: 1000,
|
MirrorQueueLength: 1000,
|
||||||
PullRequestQueueLength: 1000,
|
PullRequestQueueLength: 1000,
|
||||||
PreferredLicenses: []string{"Apache License 2.0,MIT License"},
|
PreferredLicenses: []string{"Apache License 2.0,MIT License"},
|
||||||
DisableHTTPGit: false,
|
DisableHTTPGit: false,
|
||||||
UseCompatSSHURI: false,
|
AccessControlAllowOrigin: "",
|
||||||
|
UseCompatSSHURI: false,
|
||||||
|
|
||||||
// Repository editor settings
|
// Repository editor settings
|
||||||
Editor: struct {
|
Editor: struct {
|
||||||
|
|
|
@ -27,6 +27,18 @@ import (
|
||||||
|
|
||||||
// HTTP implmentation git smart HTTP protocol
|
// HTTP implmentation git smart HTTP protocol
|
||||||
func HTTP(ctx *context.Context) {
|
func HTTP(ctx *context.Context) {
|
||||||
|
if len(setting.Repository.AccessControlAllowOrigin) > 0 {
|
||||||
|
// Set CORS headers for browser-based git clients
|
||||||
|
ctx.Resp.Header().Set("Access-Control-Allow-Origin", setting.Repository.AccessControlAllowOrigin)
|
||||||
|
ctx.Resp.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization, User-Agent")
|
||||||
|
|
||||||
|
// Handle preflight OPTIONS request
|
||||||
|
if ctx.Req.Method == "OPTIONS" {
|
||||||
|
ctx.Status(http.StatusOK)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
username := ctx.Params(":username")
|
username := ctx.Params(":username")
|
||||||
reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git")
|
reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue