← Uz sākumu

One URI to rule them all

2004. gada 8. septembrī, 7 komentāri

Man ir nācies piekabināt parastām lapām to WML analogus, lai mobilo ierīču lietotāji varētu dikti jau nu jauki skatīties. Un, lai cik tas nebūtu dīvaini, mani vienmēr ir kretinējis tas, ka jāveido ir vai nu wap.saits.lv vai saits.lv/wap. Nenoliegšu, ka vienmēr tā arī esmu darījis :) Bet tagad no more.

Teju vai 100 procentos gadījumu var iztikt ar saits.lv. Viss, kas mums ir jāizdara, ir izvēle - ko klientam piedāvāt - WML vai XHTML saturu. Vai varbūt Atom, vai HDML?

Jebkurš browseris, sūtot serverim kādu pieprasījumu, norāda satura veidus, kurus viņš saprot, izmantojot Accept HTTP hederus. Mūs interesē tieši Accept. Daži piemēri:

Firefox/0.8
application/x-shockwave-flash, text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, video/x-mng, image/png, image/jpeg, image/gif;q=0.2, /;q=0.1

Opera 7.51
application/x-shockwave-flash, text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, video/x-mng, image/png, image/jpeg, image/gif;q=0.2, text/css, /;q=0.1

Nokia 6600
application/prs.s2.putty-config, audio/wav, audio/x-wav, audio/basic, audio/x-au, audio/au, audio/x-basic, video/mp4, video/mpeg4, video/3gpp, application/vnd.rn-realmedia, audio/AMR-WB, audio/AMR, application/sdp, audio/sp-midi, audio/x-beatnik-rmf, audio/midi, application/java-archive, text/vnd.sun.j2me.app-descriptor, application/vnd.wap.wmlc, text/vnd.wap.wml, application/vnd.wap.wbxml, application/vnd.wap.wmlscriptc, text/html, application/vnd.wap.xhtml+xml, application/xhtml+xml, Psiloc/irRemote.ccf, Psiloc/irRemote.lirc, , audio/x-mp3, application/mp3skin, music/mod, music/xm, music/it, music/s3m, application/x-wallet-appl.user-data-provision, application/vnd.met.ticket, application/vnd.symbian.install, audio/x-pn-realaudio-plugin, audio/x-pn-realaudio, audio/mpegurl, audio/x-mpegurl, text/x-co-desc, application/vnd.oma.dd+xml, application/vnd.nokia.ringing-tone, text/vnd.symbian.wml.dtd, application/java, video/3gp, audio/rmf, audio/x-rmf, audio/x-midi, application/x-java-archive, application/vnd.oma.drm.message, application/x-x509-ca-cert, text/plain, text/X-vCard, text/calendar, text/x-vCalendar, text/css, image/*

IE 6
/

Tad nu tā. Ņemsim par piemēru Nokia 6600. No visas šīs MIME tipu gūzmas mums ir nepieciešami tikai tie, kuri ir tekstuāli. T.i. - text/.... Mums paliek:

text/vnd.sun.j2me.app-descriptor
text/vnd.wap.wml
text/html
text/x-co-desc
text/vnd.symbian.wml.dtd
text/plain
text/X-vCard
text/calendar
text/x-vCalendar
text/css

Secību jaukt nedrīkst. Tie tipi, kuri ir sākumā, ir tie, kurus tālrunis pieņemtu vislabprātāk.

Starp citu. Par secību. Tipam var tikt norādīts arī t.s. quality factor, kurš, rupji runājot, norāda uz svarīgumu un ir robežās no nulles, līdz viens. Ja tas nav norādīts, tā vērtība ir viens. Tas tiek norādīts sekojoši: text/vnd.wap.wml;q=0.5. Attiecīgi, jo mazāks šis quality factor, jo mazāk tālrunis vēlas norādīto satura veidu. Piemērs:

text/vnd.wap.wml;q=0.5, text/html;q=0.8, text/html+xml

Tad pēc svarīguma šis saraksts tiek izkārtots sekojošā secībā:

text/html+xml
text/html
text/vnd.wap.wml

Vēl viens moments. Tips var tikt norādīts kā text/*, kas nozīmē, ka tālrunis pieņem jebkuru tekstu. Neskatoties uz neko, šāds tips tiek novietots saraksta beigās. T.i., ja mums ir rinda text/*, */*, text/xml, tad rezultātā mums būs text/xml, text/*, */*.

Atgriezīsimies pie Nokia. Pēc kārtas ejot cauru mūsu sakārtotajam sarakstam, mēs skatāmies, ko varam piedāvāt šim tālrunim. Pirmais, ko ieraugām, ir text/vnd.sun.j2me.app-descriptor. Nedz mēs zinām, kas tas ir, nedz kā to pasniegt. Ignorējam. Nākamais ir text/vnd.wap.wml. Ahā! Tas takš ir WML! To mēs mākam, to mēs tūliņ, tūliņ. Un basta. Izsniedzam ierīcei WML kodu.

Ja nu mums neizdodas ierīcei piedāvāt to, ko jamā saprot, tad obligātā kārtā atgriežam HTTP kļūdu ar numuru 406, kas nozīmē not acceptable.

Kaut kā tā. Ja esmu nepareizi izskaidrojis quality factor nozīmi, lūdzu labojiet mani. Ja vēl kaut ko ne tā, dariet to pašu.

Un sīkāk par HTTP Accept.

Tu atbildi augstāk redzamajam komentāram. Atcelt

Gravatar Delfins

2004. gada 8. septembrī, plkst. 16:47

ū. pamācošs stāsts... :)

Gravatar Pete

2004. gada 9. septembrī, plkst. 10:32

Ļoti laba viela pārdomām. Ļoti gribētos vairāk tamlīdzīgas infas.

Gravatar taku

2004. gada 20. oktobrī, plkst. 17:46

Pirms gada http://laacz.lv/blog/2003/05/07/pasprieks/ Tu rakstīji ka ar http accept padod savam xhtml application/xhtml+xml formātu (domāju arī pamēģināt to pašu). Vai ir kāds bargs iemesls, kāpēc Tu tomēr paliec pie vecā un xhtml padod text/html?

Gravatar laacz

2004. gada 21. oktobrī, plkst. 08:38

Tāpēc, ka ar esošo SPP versiju nevaru 100% garantēt, ka saturs būs XHTML :) Tāpēc arī pagaidām padodu kā text/html. Bet viss mainās, kā zināms :)

Gravatar UL

2005. gada 18. janvārī, plkst. 22:47

text/vnd.sun.j2me.app–descriptor - to mēs, Lācz, mākam un zinām ;) (tas ir JAD), bet tas neattiecas uz šī tava posta ģenerālo tēmu.

Gravatar online poker

2005. gada 30. aprīlī, plkst. 17:08

<h1>You are invited to check out the pages about<A HREF="http://www.razordude.com/poker-rooms.html"> poker rooms </A> poker rooms <A HREF="http://www.razordude.com/poker-rooms.html">http://www.razordude.com/poker-rooms.html</A> <br/>... Thanks!!! </h1>