HTTP-Temel kimlik doğrulaması 404?

Aşağıdaki senaryo var:

  1. Radyo istasyonu xml bilgisi sunan bir ShoutCast-ish sunucum var.
  2. Getirmesi gereken bir Flash Player istemcisi var.
  3. Flash Player, GET kullanırken HTTP-Basic auth üzerinden bir şey alamaz.
  4. Bu nedenle, kimlik doğrulamayı işlemek ve bilgileri yeniden sunmak için bir Python CGI komut dosyası oluşturuyorum.

Umarım mantıklı geliyor. Temel olarak, betiğim bir HTTP isteği oluşturarak, verileri alarak ve istendiğinde yayınlayarak gerçek verilere vekalet eder.

İşte benim 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()

Oldukça basit, değil mi? Ne yazık ki, işe yaramadı. Bir tarayıcıda web sitesini ziyaret edip aynı kullanıcı adını ve şifreyi girersem çalışır; xml ağacını görebiliyorum.

Bunun yerine, stdout 'da şu çıktıyı alıyorum:

Content-Type: text/xml

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

Neyi yanlış yapıyorum? Bir tarayıcıdaki aynı URL, kullanıcı adı ve şifre göz önüne alındığında, her şey çalışıyor. Neyi kaçırdım?

1

1 cevap

Bir Kullanıcı Aracısı veya Kabul Edilebilir başlığı da gerektirebilir.

Firefox'ta Firebug veya LiveHTTP Başlıklarını kullanarak tarayıcınız tarafından gönderilen http başlıklarının bazılarını karşılaştırmayı/kopyalamayı deneyin. Doğrulanmış olduğunu onaylamak için altıgenli şifrenizi karşılaştırın. Ardından, sorunu keşfedene kadar diğer başlıkları teker teker ekleyin.

2
katma
Aynen öyleydi, bir Kullanıcı Aracısı ekledim ve işe yaradı. Teşekkürler!
katma yazar Naftuli Kay, kaynak
Doğru, böyle bir şey önemli olmamalı ... ama ne sıklıkta yaşadığına şaşıracaksınız.
katma yazar Gringo Suave, kaynak