fix(server): storage prefix url (#15477)

#### PR Dependency Tree


* **PR #15477** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added support for custom signed download URLs with configurable CDN
origins, object paths, expiration times, and security signatures.
* Custom download signing is available when both the URL prefix and
signing key are configured.

* **Bug Fixes**
* Preserved custom URL and signing settings when generating download
links.
  * Added validation for invalid signing configurations.
* Standard S3 storage continues using its existing presigned URL
behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2026-08-13 20:30:43 +08:00
committed by GitHub
parent 18977f2048
commit 0f349af8ee
6 changed files with 150 additions and 27 deletions
+12 -12
View File
@@ -494,11 +494,11 @@
},
"urlPrefix": {
"type": "string",
"description": "Optional custom origin for browser upload URLs. Provider presigned URLs also use this origin when signKey is not configured."
"description": "Optional base URL for proxied uploads and signed custom GET URLs. Provider presigned uploads require an origin-only value when signKey is not configured."
},
"signKey": {
"type": "string",
"description": "Optional HMAC key for signed upload URLs. Without urlPrefix, upload URLs use the server origin."
"description": "Optional HMAC key for signed upload and custom GET URLs. Custom GET URLs require both signKey and urlPrefix."
}
}
}
@@ -577,11 +577,11 @@
},
"urlPrefix": {
"type": "string",
"description": "Optional custom origin for browser upload URLs. Provider presigned URLs also use this origin when signKey is not configured."
"description": "Optional base URL for proxied uploads and signed custom GET URLs. Provider presigned uploads require an origin-only value when signKey is not configured."
},
"signKey": {
"type": "string",
"description": "Optional HMAC key for signed upload URLs. Without urlPrefix, upload URLs use the server origin."
"description": "Optional HMAC key for signed upload and custom GET URLs. Custom GET URLs require both signKey and urlPrefix."
}
}
},
@@ -741,11 +741,11 @@
},
"urlPrefix": {
"type": "string",
"description": "Optional custom origin for browser upload URLs. Provider presigned URLs also use this origin when signKey is not configured."
"description": "Optional base URL for proxied uploads and signed custom GET URLs. Provider presigned uploads require an origin-only value when signKey is not configured."
},
"signKey": {
"type": "string",
"description": "Optional HMAC key for signed upload URLs. Without urlPrefix, upload URLs use the server origin."
"description": "Optional HMAC key for signed upload and custom GET URLs. Custom GET URLs require both signKey and urlPrefix."
}
}
}
@@ -824,11 +824,11 @@
},
"urlPrefix": {
"type": "string",
"description": "Optional custom origin for browser upload URLs. Provider presigned URLs also use this origin when signKey is not configured."
"description": "Optional base URL for proxied uploads and signed custom GET URLs. Provider presigned uploads require an origin-only value when signKey is not configured."
},
"signKey": {
"type": "string",
"description": "Optional HMAC key for signed upload URLs. Without urlPrefix, upload URLs use the server origin."
"description": "Optional HMAC key for signed upload and custom GET URLs. Custom GET URLs require both signKey and urlPrefix."
}
}
},
@@ -1294,11 +1294,11 @@
},
"urlPrefix": {
"type": "string",
"description": "Optional custom origin for browser upload URLs. Provider presigned URLs also use this origin when signKey is not configured."
"description": "Optional base URL for proxied uploads and signed custom GET URLs. Provider presigned uploads require an origin-only value when signKey is not configured."
},
"signKey": {
"type": "string",
"description": "Optional HMAC key for signed upload URLs. Without urlPrefix, upload URLs use the server origin."
"description": "Optional HMAC key for signed upload and custom GET URLs. Custom GET URLs require both signKey and urlPrefix."
}
}
}
@@ -1377,11 +1377,11 @@
},
"urlPrefix": {
"type": "string",
"description": "Optional custom origin for browser upload URLs. Provider presigned URLs also use this origin when signKey is not configured."
"description": "Optional base URL for proxied uploads and signed custom GET URLs. Provider presigned uploads require an origin-only value when signKey is not configured."
},
"signKey": {
"type": "string",
"description": "Optional HMAC key for signed upload URLs. Without urlPrefix, upload URLs use the server origin."
"description": "Optional HMAC key for signed upload and custom GET URLs. Custom GET URLs require both signKey and urlPrefix."
}
}
},