CEPH + S3 Java SDK + предварительно назначенный PUT + CORS = FAIL

Я ищу волшебную формулу, чтобы заставить работать CEPH + S3 Java SDK + PUT url + CORS. Мы можем создать сегмент, а затем применить к нему конфигурацию CORS. Затем мы можем создать предварительно сгенерированный URL-адрес PUT, который мы затем отправляем обратно клиенту. Тем не менее, предварительный запрос CORS (Опции) не удается с 403.

Против AWS этот же код прекрасно работает. Однако Swift и Ceph завершаются ошибкой по запросу OPTIONS с 403. Поскольку OPTIONS завершается с ошибкой, происходит сбой CORS. Мы отследили это (мы думаем) до возможного недостатка в RADOSGW в том, как он создает заголовок auth... он не соответствует процессу подписания, используемому amazon SDK. Например:

AWS Java auth hdr that gets signed:
PUT

image/jpeg
1404252781
x-amz-meta-origfile:Desert.jpg
/virbsupport/78946140-4638-4338-b765-6f701c453a89?response-content-disposition=attachment; filename=Desert.jpg

In Ceph:
OPTIONS


1404252781
/virbsupport/78946140-4638-4338-b765-6f701c453a89?response-content-disposition=attachment; filename=Desert.jpg

Мы можем работать с отсутствующим типом контента и дополнительными полями метаданных, но заметим, что МЕТОД совершенно неверен. RADOSGW Я думаю, что следует использовать "Access-Control-Request-Method" в качестве метода в сигнатуре... а не фактический метод OPTIONS, используемый для предварительного запроса.

Кто-нибудь смог получить эту функциональную комбинацию?

1 ответ

Решение

Мы закончили регистрировать ошибку в библиотеке Ceph RGW для этой проблемы. http://tracker.ceph.com/issues/8718

Другие вопросы по тегам