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 | ||||
| ; Disable the ability to interact with repositories using the HTTP protocol | ||||
| 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 | ||||
| USE_COMPAT_SSH_URI = false | ||||
| 
 | ||||
|  |  | |||
|  | @ -62,6 +62,9 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`. | |||
|    HTTP protocol. | ||||
| - `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when | ||||
|    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`) | ||||
| - `WORK_IN_PROGRESS_PREFIXES`: **WIP:,\[WIP\]**: List of prefixes used in Pull Request | ||||
|  |  | |||
|  | @ -209,6 +209,7 @@ var ( | |||
| 		PullRequestQueueLength   int | ||||
| 		PreferredLicenses        []string | ||||
| 		DisableHTTPGit           bool | ||||
| 		AccessControlAllowOrigin string | ||||
| 		UseCompatSSHURI          bool | ||||
| 
 | ||||
| 		// Repository editor settings
 | ||||
|  | @ -245,6 +246,7 @@ var ( | |||
| 		PullRequestQueueLength:   1000, | ||||
| 		PreferredLicenses:        []string{"Apache License 2.0,MIT License"}, | ||||
| 		DisableHTTPGit:           false, | ||||
| 		AccessControlAllowOrigin: "", | ||||
| 		UseCompatSSHURI:          false, | ||||
| 
 | ||||
| 		// Repository editor settings
 | ||||
|  |  | |||
|  | @ -27,6 +27,18 @@ import ( | |||
| 
 | ||||
| // HTTP implmentation git smart HTTP protocol
 | ||||
| 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") | ||||
| 	reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git") | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue