28.08.2011 | 11:33
Sorry, zapravo mi nije pomoglo uopće.
Koliko kužim, ovo je challenge-response autentifikacija. Meni treba obična, glupa, non-secure, basic autentifikacija, gdje klijent treba poslati
username : password
base64 enkodirano, serveru kao običan tekst.
Kôd neće biti za OS X, nego za neku egzotičnu embedded platformu.
Imam problem s razumijevanjem protokola, a moram ga implementirati od nule jer nemam nikakve funkcije na raspolaganju.
HTTP server (taj embedded uređaj) koristi verziju 1.0. Dakle, protokol je opisan u
tools.ietf.org/html/rfc1945
Ono što mene konkretno zanima je request, dakle poglavlje 5. Tu piše:
there are two valid formats for an HTTP request:
Request = Simple-Request | Full-Request
Simple-Request = "GET" SP Request-URI CRLF
Full-Request = Request-Line ; Section 5.1
*( General-Header ; Section 4.3
| Request-Header ; Section 5.2
| Entity-Header ) ; Section 7.1
CRLF
[ Entity-Body ] ; Section 7.2
Dakle, simple request je jednostavan za riješiti. Čisto ovako, za probu, otvoriš Terminal i tipkaš
telnet www.jabucnjak.hr 80
dobiješ klasični Telnet odgovor koji nema veze s HTTP protokolom
Trying 62.212.66.212...
Connected to www.jabucnjak.hr.
Escape character is '^]'.
pošalješ simple request
GET http://www.jabucnjak.hr/
(Jabučnjak sjedi na serveru koji nije samo njegov pa onda treba u GET-u poslati apsolutni URI. U mom slučaju bi trebalo unijeti relativni URI, dakle nešto kao "/index.html")
Uglavnom, na ovo dobiješ od servera odgovor u vidu cijele HTML stranice koju bi onda web browser dekodirao i prikazao:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="shortcut icon" href="images/favicon.ico" />
<link type="text/css" rel="stylesheet" href="/min/f=templates/jabucnjak/css/template_css.css,components/com_kunena/template/jabucnjak/forum.css,modules/mod_d4j_transmenu.css,modules/mod_modragulizer/mod_modragulizer.css,modules/mod_ninjarss/mod_ninjarss.css" />
<script type="text/javascript" src="/min/?g=js"></script>
<title>Jabučnjak - Novosti</title>
<meta name="description" content="Jabučnjak - Hrvatska zajednica Apple korisnika" />
<meta name="keywords" content="Jabucnjak, apple forum, iphone, mac forum" />
<meta name="Generator" content="Joomla! - Copyright (C) 2005 - 2006 Open Source Matters. All rights reserved." />
<meta name="robots" content="index, follow" />
<link rel="stylesheet" type="text/css" href="http://www.jabucnjak.hr/components/com_jomcomment/style.css"/>
<link rel="stylesheet" type="text/css" href="http://www.jabucnjak.hr/components/com_jomcomment/templates/jabucnjak/comment_style.css"/>
i tako dalje, da sad ovdje ne quotam cijelu naslovnu stranicu jabučnjaka. Uglavnom, nakon što server isporuči stranicu, prekida TCP session (Telnet veza se zatvara)
</body>
</html>
<!-- 1314519197 -->Connection closed by foreign host.
Međutim, kad treba poslati full request, treba poslati više linija, najprije GET, a onda za njom Authorization: header. Međutim, meni server već na prvu liniju reagira i odbije me sa 401 Unauthorized prije nego uopće prihvati i pročita Authorization header koji slijedi.
Dakle, očito sam nešto krivo skužio i nešto krivo radim, a ne kužim što.
Nešto o autorizaciji sam našao i ovdje, ali nije mi ništa jasnije:
en.wikipedia.org/wiki/Basic_access_authentication