Allow indicating index using X-Content-Index header for better CORS experience.

This commit is contained in:
flash 2025-01-17 07:13:44 +00:00
parent 894a8c2982
commit a4453ab5bc
2 changed files with 23 additions and 2 deletions

View file

@ -82,7 +82,28 @@ class TasksRoutes implements RouteHandler {
];
}
if($request->hasHeader('X-Content-Index')) {
if($request->hasParam('index')) {
$response->setStatusCode(400);
return [
'error' => 'bad_param',
'english' => 'the index query parameter may not be used at the same time as the X-Content-Index header.',
];
}
$index = (int)filter_var($request->getHeaderLine('X-Content-Index'), FILTER_SANITIZE_NUMBER_INT);
} elseif($request->hasParam('index')) {
if($request->hasHeader('X-Content-Index')) {
$response->setStatusCode(400);
return [
'error' => 'bad_param',
'english' => 'the X-Content-Index header may not be used at the same time as the index query parameter.',
];
}
$index = (int)$request->getParam('index', FILTER_SANITIZE_NUMBER_INT);
} else $index = 0;
if($index < 0) {
$response->setStatusCode(400);
return [

View file

@ -28,7 +28,7 @@ class UploadsViewRoutes implements RouteHandler {
#[HttpOptions('/([A-Za-z0-9]+|[A-Za-z0-9\-_]{32})(?:-([a-z0-9]+))?(?:\.([A-Za-z0-9\-_]+))?')]
public function optionsUpload($response, $request, string $uploadId, string $variant = '', string $extension = ''): int {
if($this->isApiDomain && $variant === '') {
$response->setHeader('Access-Control-Allow-Headers', 'Authorization, Content-Type, Content-Length');
$response->setHeader('Access-Control-Allow-Headers', 'Authorization, Content-Type, Content-Length, X-Content-Index');
$response->setHeader('Access-Control-Allow-Methods', 'HEAD, GET, PUT, DELETE');
$response->setHeader('Access-Control-Max-Age', '300');
} else {