2012-10-31 21 views
6

Mam pliki hostowane na Amazon S3 i chcę je pobrać po zabiegu w mojej aplikacji. Widok tej aplikacji wymaga, aby działał nagłówek autoryzacji HTTP. Oto sposób:Nie propaguj nagłówków przekierowań HTTP

  1. widok Zapytanie /file/xxx z wymaganą Authorization nagłówka żądania
  2. Jeżeli dostęp aplikacja jest przyznana, nie jakiś zabieg
  3. Generowanie podpisanego S3 url i przekierować do niego

Faktem jest, że nagłówek żądania jest również propagowany w przekierowaniu i jest w konflikcie z podpisem Amazon S3. Mam następujący komunikat o błędzie:

Albo kwerenda parametryczna ciąg Podpis lub nagłówek Upoważnienie powinno być określone, nie oba

Więc, czy jest jakiś sposób, aby nie propagować nagłówek do S3 Authorization?

Pamiętaj, że przetestowałem wszystkie kody HTTP 3xx. Z góry dziękuję.

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? – gorus

+0

Obowiązkiem klienta jest propagowanie nagłówka i wydaje się, że zmienna jest zmienna ... Z pamięci pominąłem konflikt przekazujący mój token autoryzacji za pomocą parametru GET. –

+0

Dziękuję, w moim przypadku, diabeł tkwi w szczegółach, niestety: http://stackoverflow.com/questions/33714122 – gorus

Odpowiedz

0

Czy Twoja ścieżka pliku S3 znajduje się w tej samej domenie co Twoja /file/xxx? To by wyjaśniało, dlaczego wysyłany jest nagłówek Authorization, prawdopodobnie. Jeśli masz S3 hostowane w innej domenie niż w widoku aplikacji, to zakładam, że nagłówek autoryzacji nie zostanie wysłany do domeny S3 (ponieważ autoryzacja HTTP jest dla domeny).

+0

Dzięki za odpowiedź Matthew, ale to nie jest dokładnie w tej samej domenie. '/ file/xxx' jest lokalne, wspierane przez Django na moim komputerze programistycznym. –

2

Może to zależy od klienta, na przykład zobaczyć: https://code.google.com/p/go/issues/detail?id=4800

Wydaje curl nie będą przeniesione nagłówka Authorization domyślnie. Ale mam do czynienia z podobnym problemem i widzę, że domyślnie komponenty http wydają się je nosić.

Powiązane problemy