[XHTML Content-Type] Waar juiste content type specificatie?

Pagina: 1
Acties:
  • 134 views sinds 30-01-2008
  • Reageer

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
Er zijn hier op GoT vele topics die gaan over het meesturen van het juiste Content-Type van een XHTML code/pagina.
De juiste content-type moet zijn: application/xhtml+xml

Voor zover ik weet kan ik de Content-Type van een document op 2 verschillende plekken definieren.
Namelijk in de HEAD Meta-tag:
HTML:
1
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" />

Maar ook als juiste content-type meesturen d.m.v. bijv.
ASP:
1
2
3
4
5
6
7
8
'Sending correct XHTML MIME type
If InStr(Request.ServerVariables("HTTP_ACCEPT"), "application/xhtml+xml") > 0 Then
 Response.AddHeader "Content-Type", "application/xhtml+xml"
 Response.Write "<!-- MIME: application/xhtml+xml //-->"
Else
 Response.AddHeader "Content-Type", "text/html"
 Response.Write "<!-- MIME: text/html //-->"
End If 

Omdat IE geen application/xhtml+xml ondersteund wordt indien application/xhtml+xml niet geaccepteerd wordt gewoon text/html meegestuurd.

Beide zijn compleet verschillend naar mijn idee.
Mijn vraag: welke moet je nou specificeren voor de juiste content-type? Oftewel, waar hoort het? Bij beiden of.....? :?
Volgens mij gebruiken veel mensen maar 1 van de 2, maar zijn ze niet beiden nodig?

Het vreemde ook vindt ik trouwens dat wanneer ik FireFox gebruik en dus met bovenstaande manieren application/xhtml+xml meestuur als Content-Type Firefox dit toch aangeeft als Page info:
(Bij type staat gewoon: text/html)

Afbeeldingslocatie: http://urk.atspace.com/content-type.jpg

Verwijderd

in de headers, als meta element wordt er niks mee gedaan, behalve af en toe door editors (en dan vooral vanwege het charset)

  • André
  • Registratie: Maart 2002
  • Laatst online: 20-02 09:23

André

Analytics dude

Er klopt dan iets niet met je script als FF het nog steeds als text/html laat zien, ik gebruik deze en die werkt perfect:

PHP:
1
2
3
4
5
6
7
if (isset($_SERVER["HTTP_ACCEPT"]))
{
  $mime = (stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml")) ? "application/xhtml+xml" : "text/html";
} else {
  $mime = "text/html";
}
header("content-type: $mime; charset=utf-8");

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
André schreef op woensdag 10 mei 2006 @ 14:18:
Er klopt dan iets niet met je script als FF het nog steeds als text/html laat zien, ik gebruik deze en die werkt perfect:

PHP:
1
2
3
4
5
6
7
if (isset($_SERVER["HTTP_ACCEPT"]))
{
  $mime = (stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml")) ? "application/xhtml+xml" : "text/html";
} else {
  $mime = "text/html";
}
header("content-type: $mime; charset=utf-8");
Dat is heel vaag. M'n script is volgens mij gewoon prima, ooit hier van GoT overgenomen!
Wanneer ik de hele check weglaat en alleen
ASP:
1
Response.AddHeader "Content-Type", "application/xhtml+xml"

plaats bovenaan m'n script blijft Firefox 1.5.3 het aangeven als text/html.
Geeft Firefox dit niet altijd aan dan?

  • user109731
  • Registratie: Maart 2004
  • Niet online
Misschien handig om even met de developer toolbar voor firefox te kijken welke headers er precies binnenkomen? Misschien zet de webserver er standaard een text/html neer oid.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wordt het niet alsnog overruled door je webserver?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
Als ik met een HTTP Header viewer op internet bekijk krijg ik dus als resultaat:

code:
1
2
3
4
5
6
7
8
9
10
Name Value Delim 
HTTP Status Code: HTTP/1.1 200 OK  
Server: Microsoft-IIS/5.0 CRLF 
Date: Wed, 10 May 2006 13:48:00 GMT CRLF 
Connection: close CRLF 
Content-Type: text/html CRLF 
Content-Length: 9624 CRLF 
Content-Type: text/html CRLF 
Set-Cookie: ASPSESSIONIDAQBQCBRR=IHEAEAKAIKOGLPHIALNLKCFE; path=/ CRLF 
Cache-control: private CRLF

Wanneer ik in IIS een HTTP header toevoeg wordt het dit:
code:
1
2
3
4
5
6
7
8
9
10
11
Name Value Delim 
HTTP Status Code: HTTP/1.1 200 OK  
Server: Microsoft-IIS/5.0 CRLF 
Date: Wed, 10 May 2006 13:49:44 GMT CRLF 
Content-Type: application/xhtml+xml CRLF 
Connection: close CRLF 
Content-Type: text/html CRLF 
Content-Length: 9624 CRLF 
Content-Type: text/html CRLF 
Set-Cookie: ASPSESSIONIDAQBQCBRR=JHEAEAKAGLAGMCADGOOCGHLH; path=/ CRLF 
Cache-control: private CRLF

Beetje vaag, toch?

  • JaFFoG
  • Registratie: Januari 2003
  • Laatst online: 21-10-2025
Urk schreef op woensdag 10 mei 2006 @ 14:27:
[...]

Dat is heel vaag. M'n script is volgens mij gewoon prima, ooit hier van GoT overgenomen!
Wanneer ik de hele check weglaat en alleen
ASP:
1
Response.AddHeader "Content-Type", "application/xhtml+xml"

plaats bovenaan m'n script blijft Firefox 1.5.3 het aangeven als text/html.
Geeft Firefox dit niet altijd aan dan?
Nee, Firefox geeft alleen text/html aan als het type content ook daadwerkelijk zo is (ingesteld). Dus de content-type die je met ASP set wordt blijkbaar overruled (of de code is niet goed, maar daarvoor heb ik te weinig verstand van ASP).

Ik definiëer de content-type middels PHP en middels een meta-tag in de <head> van de pagina (uiteraard m.u.v. browsers/browserversies die het content-type application/xhtml+xml niet ondersteunen).

[ Voor 11% gewijzigd door JaFFoG op 13-05-2006 17:00 . Reden: plaatje :) ]

Bla


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:18

crisp

Devver

Pixelated

Jammer dat geen van de hier geposte voorbeelden rekening houdt met de preference (q-waarde) in de HTTP_ACCEPT request header.

En als ik dan toch olie op het vuur ga gooien:
Beide zijn compleet verschillend naar mijn idee.
HTML en XHTML zijn ook compleet verschillend; sterker nog: een document met XHTML syntax is likely invalid HTML. Non-XHTML capable browsers een HTML mimetype sturen en je XHTML document ongewijzigd erachteraan erop vertrouwend dat de error-correction van betreffende browser het verder wel opknapt voor je is mogelijk een nog grotere vergissing dan XHTML gebruiken puur en alleen omdat het een X heeft en dus wel hipper moet zijn dan HTML :P
En als een document blijkbaar ook als HTML verstuurd kan worden dan vraag ik me af waarom je eigenlijk ueberhaupt voor XHTML gekozen hebt...

[ Voor 12% gewijzigd door crisp op 14-05-2006 00:43 ]

Intentionally left blank


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 17-02 21:45
crisp:
om dit topic weer even opnieuw leven in te blazen...

Is het niet zo dat 98% van alle XHTML gewoon verstuurd wordt als text/html?

Het is mij nog steeds niet echt duidelijk hoe ik vanuit ASP de juiste content type mee kan sturen? Blijkbaar overruled IIS deze HTTP header...?!?
Omdat deze dynamisch moet worden toegewezen (voor juist gebruik met IE) kan ik dit niet in IIS overrulen lijkt me, toch?

[ Voor 52% gewijzigd door Urk op 25-05-2006 16:58 ]


Verwijderd

Urk schreef op donderdag 25 mei 2006 @ 16:56:
Het is mij nog steeds niet echt duidelijk hoe ik vanuit ASP de juiste content type mee kan sturen? Blijkbaar overruled IIS deze HTTP header...?!?
Omdat deze dynamisch moet worden toegewezen (voor juist gebruik met IE) kan ik dit niet in IIS overrulen lijkt me, toch?
Van ASP weet ik niet zo veel af, maar voor zover ik weet kun je met ASP alle kanten op. Standaard zal de output wel als text/html worden verstuurd, maar ik neem aan dat ASP ook andere content types aankan, bijvoorbeeld voor het dynamisch aanbieden van afbeeldingen en PDF-bestanden.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:18

crisp

Devver

Pixelated

Urk schreef op donderdag 25 mei 2006 @ 16:56:
crisp:
om dit topic weer even opnieuw leven in te blazen...

Is het niet zo dat 98% van alle XHTML gewoon verstuurd wordt als text/html?
Ja, en dat maakt XHTML als technologie zo nutteloos. Als je geen XHTML nodig hebt kan je dus beter gewoon HTML gebruiken.
Er is gewoon grote misperceptie omtrent wat XHTML eigenlijk is; wat XHTML in ieder geval niet is is een opvolger of nieuwere versie van HTML. XHTML is HTML maar dan als XML-applicatie bedoelt om samen met andere XML-applicaties (SVG, MathML etc) gebruikt te kunnen worden.
Als XML-applicatie breek je echter met een aantal SGML-features; XHTML syntax is in veel gevallen zelfs geen valid HTML syntax. Je verruilt een aantal voordelen voor een aantal nadelen en beperkingen, en als je geen gebruik maakt van die zaken waar XHTML eigenlijk voor bedoelt is dan gebruik je gewoon de verkeerde techniek voor iets waar HTML beter geschikt is. Zoiets als een hamer gebruiken om een schroef in de muur te draaien :P

Bottomline: als je site gewoon werkt met een text/html mimetype dan heb je er het verkeerde DTD boven staan want dan heb je helemaal geen XHTML nodig. Content-type negotiation is een farce als je het puur gebruikt om hetzelfde document met een andere content-type te versturen.

[ Voor 63% gewijzigd door crisp op 27-05-2006 22:41 ]

Intentionally left blank

Pagina: 1