У меня есть следующий yaml:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
В main.py у меня есть wsgi, обслуживающий «Привет мир» для маршрута »/(.*)".
Сейчасу меня проблема в том, что когда я выполняю:
curl -v -H 'Host: myapp.appspot.com' 'https://storage.googleapis.com/greetme'
Хотя я вижу, что SNI и Host ожидаемые, я получаю:
<?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message><Details>Anonymous caller does not have storage.objects.get access to myapp.appspot.com/test.</Details></Error>
Но если я использую почтальонаили fiddler для того же запроса, тогда я получаю фактический «Hello World»
Я попытался отладить это, просматривая точные заголовки, отправленные в каждом случае, но безуспешно.Даже после отправки абсолютно идентичных заголовков у меня возникла та же проблема.
Эта мысль сводит меня с ума, когда я думаю, почему у меня такое поведение?
РЕДАКТИРОВАТЬ: похоже, когда я использую прокси, основной.py обслуживает мой запрос, но когда я использую curl, сервер пытается найти, например, в данном примере ресурс greetme на myapp.appspot.com, полностью обойдя мое pythonapplicaton.Я пытался кстати изменить пользовательский агент, но ничего.Все еще не уверен, почему это происходит.
EDIT2: После просмотра wireshark, fiddler открывает два ssl-соединения, первое на storage.googleapis.com, а второе на myapp.appspot.net.Таким образом, соединение на myapp.appspot.net не маршрутизируется через первый сеанс.
Так что оно работает, как и ожидалось, для curl и fiddler (но не так, как хотелось бы).Вне зависимости от этого, если я создаю файл test.txt в моем контейнере и предоставляю разрешение на чтение всем пользователям, то:
curl -v -H 'Host: myapp.appspot.com' 'https://storage.googleapis.com/test.txt'
Возвращает фактическое содержимое моего test.txt и маршрутизируется черезgoogleapis.Не должно ли быть способ запуска моего приложения?или они разрешают отображение доменов только для статического содержимого?