2015-01-09 6 views
0

У нас есть веб-сайт, который позволяет пользователям входить в систему с использованием скрытых входов для передачи username и password в виде HTML-кода следующим образом (я знаю, что это небезопасно, но это то, что я просил сделать :-().GAE: POST OK как локальный файл HTML, но не в инфраструктуре GAE SDK или GAE.

<form method="post" action="https://..."> 
    <input name="username" value="..." type="hidden"> 
    <input name="password" value="..." type="hidden"> 
    <input type="submit" value="submit"> 
</form> 

Если файл HTML сохраняется как локальный HTML-файл, я могу успешно войти в систему, подав форму (URL отображается в браузере file:///.../xxx.html) .

Однако, если я использую GAE SDK для визуализации HTML-файла, я не могу войти в систему, и веб-сайт жалуется, что я пытаюсь подключиться к logi n через неизвестный источник (URL, отображаемый в браузере, - http://localhost:8080/).

Если я развертываю систему в инфраструктуре GAE, я также не могу войти в нее, с тем же сообщением об ошибке, что и выше (URL-адрес, отображаемый в браузере, равен http://xxxxx.appspot.com).

Интересно, в чем разница между локальной формой HTML и формой, созданной веб-сайтом.

Как включить регистрацию через форму, созданную веб-сайтом?

+0

Может быть, потому, что вы используете HTTPS в сообщении? – Ryan

+0

Нет, я поменял https на http. Ситуации те же. –

+0

Веб-сайт включает 'gatekeeper.aspx'. Имеет ли это какое-либо отношение к проблеме? –

ответ

1

Важной частью является окончательная связь HTTP между вашим браузером и службой ведения журнала, которую вы используете, сообщение формы будет переводиться в конец. Чтобы увидеть какую-либо разницу, вы можете использовать любой браузер (Google-> View-> Developer-> Developer Tools) и увидеть событие Network при отправке формы. Вы заметите некоторые различия между POST, сделанным из файла, и POST, сделанным из файла, обслуживаемого локальным или облачным сервером (например, Google SDK или Google App Engine), я сделал быстрый тест, и основное различие:

при проводке из файла:

происхождения: нулевой

И при проводке из HTML с сервера:

Origin:http://localhost:26124 
Referer:http://localhost:26124/testform/ 

с серверной стороны точки зрения, вы можете настроить макет POST слушателя (я сделал это SDK), это код:

class TestFormHandler(BaseHandler): 
    def get(self): 
     form = """ 
       <form method="post" action=""> 
       <input name="username" value="valueusernamme" type="hidden"> 
       <input name="password" value="valuepassword" type="hidden"> 
       <input type="submit" value="submit"> 
       </form> 
     """ 
    self.response.out.write(form) 

def post(self): 
    logging.info(self.request.body) 
    logging.info(self.request.headers) 
    logging.info(self.request.params) 
    logging.info(self.request.cookies) 

И затем использовать файл с формой (убедитесь, что форма действия является адрес локального или облачного локального хоста службы и порта, если его из собственной машины), или получить доступ к службе, которую установки (ГЭТ Обработчик, который возвращает предыдущую форму).

После печати тела, заголовки, Params и печенье этой формы:

С POST файла:

username=valueusernamme&password=valuepassword 

{'X-Appengine-Country': 'ZZ', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'es-419,es;q=0.8,en;q=0.6', 'Content_Length': '46', 'Content-Length': '46', 'Content_Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.69 Safari/537.36', 'Host': 'localhost:26124', 'Origin': 'null', 'Pragma': 'no-cache', 'Cookie': 'dev_appserver_login="[email protected]:True:185804764220139124118"; PHPSESSID=f87c32d417539f8d2903ac76dc5fef1f; language_id=1; __atuvc=0%7C43%2C1%7C44%2C8%7C45%2C0%7C46%2C54%7C47; session=eyJfY3NyZl90b2tlbiI6IjVzcVhEayJ9|1418620181|f01cc7c352763ebe30a0c1d2a34f063112641bbd; _ga=GA1.1.629360734.1406657652; hl=es_ES', 'Cache-Control': 'no-cache'} 

UnicodeMultiDict([(u'username', u'valueusernamme'), (u'password', '******')]) 

UnicodeMultiDict([(u'__atuvc', u'0%7C43%2C1%7C44%2C8%7C45%2C0%7C46%2C54%7C47'), (u'PHPSESSID', u'f87c32d417539f8d2903ac76dc5fef1f'), (u'dev_appserver_login', u'[email protected]:True:185804764220139124118'), (u'session', u'eyJfY3NyZl90b2tlbiI6IjVzcVhEayJ9|1418620181|f01cc7c352763ebe30a0c1d2a34f063112641bbd'), (u'_ga', u'GA1.1.629360734.1406657652'), (u'language_id', u'1'), (u'hl', u'es_ES')]) 

С файл служил с сервера:

username=valueusernamme&password=valuepassword 

{'X-Appengine-Country': 'ZZ', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'es-419,es;q=0.8,en;q=0.6', 'Content_Length': '46', 'Content-Length': '46', 'Referer': 'http://localhost:26124/testform/', 'Content_Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.69 Safari/537.36', 'Host': 'localhost:26124', 'Origin': 'http://localhost:26124', 'Pragma': 'no-cache', 'Cookie': 'dev_appserver_login="[email protected]:True:185804764220139124118"; PHPSESSID=f87c32d417539f8d2903ac76dc5fef1f; language_id=1; __atuvc=0%7C43%2C1%7C44%2C8%7C45%2C0%7C46%2C54%7C47; session=eyJfY3NyZl90b2tlbiI6IjVzcVhEayJ9|1418620181|f01cc7c352763ebe30a0c1d2a34f063112641bbd; _ga=GA1.1.629360734.1406657652; hl=es_ES', 'Cache-Control': 'no-cache'} 

UnicodeMultiDict([(u'username', u'valueusernamme'), (u'password', '******')]) 

UnicodeMultiDict([(u'__atuvc', u'0%7C43%2C1%7C44%2C8%7C45%2C0%7C46%2C54%7C47'), (u'PHPSESSID', u'f87c32d417539f8d2903ac76dc5fef1f'), (u'dev_appserver_login', u'[email protected]:True:185804764220139124118'), (u'session', u'eyJfY3NyZl90b2tlbiI6IjVzcVhEayJ9|1418620181|f01cc7c352763ebe30a0c1d2a34f063112641bbd'), (u'_ga', u'GA1.1.629360734.1406657652'), (u'language_id', u'1'), (u'hl', u'es_ES')]) 

Некоторые службы проверяют Происхождение запроса и могут фильтровать доступ с помощью Origin или Referer, я бы попытался посмотреть службу регистрации, чтобы узнать, есть ли у них что-то в этом отношении.

+0

Миллион спасибо. У меня нет контроля над веб-сайтом. :-(Так что регистрация невозможна. –