Почему второй документ приведен ниже как XML, а не HTML? document.constructor
становится XMLDocument
.
EDIT
Веб-сервер отвечает application/xhtml+xml; charset=utf-8
, когда я отправляю запрос из браузера (вместо curl
). Я только заметил, когда нюхал с Wireshark. Возможно, мне не нужно было публиковать этот вопрос, так как кажется, что я неправильно настроил веб-сервер.
РЕДАКТИРОВАТЬ 2: Это была проблема Lift-Web (веб-инфраструктура, которую я использую). Смотрите мой ответ ниже.
(Это нарушает Google SVG Web для меня. SVG Web отлично работает, в моем случае, с HTML
но не XML. И я понятия не имею, как заставить веб-браузер учитывать
документ HTML, а не XML - думаю, я уже указал, что HTML не
XML.)
Документ first ниже представлен как HTML. Но я не могу на всю жизнь найти
любая существенная разница в заголовках HTTP или <meta>
тегах первого и второго документов!?
(я их разобрал; есть только несколько неинтересных заголовков, которые отличаются.)
В частности, в обоих документах указывается Content-Type: text/html; charset=utf-8
,
как в заголовках HTTP, так и в тегах <meta>
.
(Проверяет ли браузер другие вещи, помимо заголовков и тегов HTTP и, возможно, суффикса файла, для определения типа контента?)
Когда я отлаживаю код JavaScript:
document.constructor === XMLDocument
верно для первого документа,
document.constructor === HTMLDocument
верно для второго.
Браузер: Google Chrome 9.0.597.83 бета.
Здесь следует первый документ и его заголовки HTTP, как видно из curl
: (это приводит к HTML)
$ curl -v -v http://localhost/foo/content-type-html-test.html | head -n10
* About to connect() to localhost port 80 (#0)
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /foo/content-type-html-test.html HTTP/1.1
> ...
< HTTP/1.1 200 OK
< Date: Sun, 06 Mar 2011 09:06:42 GMT
< Server: Apache/2.2.14 (Ubuntu)
< Last-Modified: Sun, 06 Mar 2011 08:58:30 GMT
< ETag: "77402b-3bc4-49dcc95441980"
< Accept-Ranges: bytes
< Content-Length: 15300
< Content-Type: text/html; charset=utf-8
<
...curl shows download progress...
* Closing connection #0
<!DOCTYPE html>
<html xmlns:lift="http://liftweb.net/" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta content="" name="description" />
<meta content="" name="keywords" />
<title>Foo</title>
<!-- svg.js must the first script on the page. -->
<script src="./content-type-html-test_files/svg.js" type="text/javascript" data-path="/classpath/js" ></script>
<!--<script data-path="/classpath/js" type="text/javascript" src="/classpath/js/svg.js"></script> -->
<script src="./content-type-html-test_files/jquery-1.4.2.js" type="text/javascript" ></script>
Второй: (результаты в XML)
$ curl -v -v http://localhost:8080/0/about.html | head -n10
* About to connect() to localhost port 8080 (#0)
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /0/about.html HTTP/1.1
> ...
< HTTP/1.1 200 OK
< Expires: Sun, 6 Mar 2011 09:07:35 UTC
< Set-Cookie: JSESSIONID=1p9o4y4cv2d531as8s5xrdysch;Path=/
< Content-Length: 11085
< Cache-Control: no-cache; private; no-store
< Content-Type: text/html; charset=utf-8
< Pragma: no-cache
< Date: Sun, 6 Mar 2011 09:07:35 UTC
< X-Lift-Version: 2.2
< Server: Jetty(6.1.25)
<
...curl shows download progress...
* Closing connection #0
<!DOCTYPE html>
<html xmlns:lift="http://liftweb.net/" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta content="" name="description" />
<meta content="" name="keywords" />
<title>Foo</title>
<!-- svg.js must the first script on the page. -->
<script src="/classpath/js/svg.js" type="text/javascript" data-path="/classpath/js"></script>
<!--<script data-path="/classpath/js" type="text/javascript" src="/classpath/js/svg.js"></script> -->