404 на HTTP-Basic аутентификации? - PullRequest
1 голос
/ 28 октября 2011

У меня есть следующий сценарий:

  1. У меня есть сервер ShoutCast-ish, который выдает информацию о радиостанции в формате XML.
  2. У меня есть клиент Flash Player, который должен получить его.
  3. При использовании GET Flash Player не может получать данные через HTTP-Basic auth.
  4. Итак, я создаю сценарий Python CGI для обработки аутентификации и повторного предоставления информации.

Надеюсь, что это имеет смысл.По сути, мой сценарий служит прокси для реальных данных, создавая HTTP-запрос, извлекая данные и передавая их по запросу.

Вот мой Python

#!/usr/bin/python
import base64, cgitb, sys, urllib2

cgitb.enable()

print "Content-Type: text/xml"
print

username = "username"
password = "password"
url = "http://s6.voscast.com:7158/admin.cgi?mode=viewxml"

auth = base64.encodestring('%s:%s' % (username, password))[:-1]
request = urllib2.Request(url)
request.add_header("Authorization", "Basic %s" % auth)

try:
    handle = urllib2.urlopen(request)
except IOError, e:
    print "Something Failed."
    sys.exit(1)

print handle.read()

Довольно просто,право?К сожалению, это не работает.Если я захожу на сайт в браузере и ввожу то же имя пользователя и пароль, это работает;Я вижу дерево XML.

Вместо этого я получаю следующий вывод в stdout:

Content-Type: text/xml

ICY 404 Resource Not Found
icy-notice1:<BR>SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-notice2:The resource requested was not found<BR>

Что я делаю не так?Учитывая тот же URL, имя пользователя и пароль в браузере, все работает.Что я пропустил?

1 Ответ

2 голосов
/ 28 октября 2011

Может потребоваться также заголовок User-Agent или Accepts.

Попробуйте сравнить / скопировать некоторые заголовки http, отправленные вашим браузером, используя Firebug или LiveHTTP Headers в Firefox, или инструменты Chrome dev Сравните ваш зашифрованный пароль, чтобы убедиться, что он правильный. Затем добавляйте другие заголовки по одному, пока не обнаружите проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...