Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么此文档呈现为XML而不是HTML5?_Xml_Html_Lift - Fatal编程技术网

为什么此文档呈现为XML而不是HTML5?

为什么此文档呈现为XML而不是HTML5?,xml,html,lift,Xml,Html,Lift,为什么下面的第二个文档被重新定义为XML而不是HTMLdocument.constructor变成XMLDocument 编辑 Web服务器用application/xhtml+xml回复;当我从浏览器发出请求时,charset=utf-8(而不是curl)。我只是注意到,当用线鲨嗅东西的时候。也许我当时不需要发布这个问题,因为我似乎没有正确配置Web服务器 编辑2:这是一个提升Web问题(我使用的Web框架)。见我下面的答复 (对我来说,这打破了谷歌的SVG网络。在我看来,SVG网络与HTM

为什么下面的第二个文档被重新定义为XML而不是HTML
document.constructor
变成
XMLDocument

编辑 Web服务器用
application/xhtml+xml回复;当我从浏览器发出请求时,charset=utf-8
(而不是
curl
)。我只是注意到,当用线鲨嗅东西的时候。也许我当时不需要发布这个问题,因为我似乎没有正确配置Web服务器

编辑2:这是一个提升Web问题(我使用的Web框架)。见我下面的答复


(对我来说,这打破了谷歌的SVG网络。在我看来,SVG网络与HTML配合得很好 但不是XML。我不知道如何让Web浏览器考虑。 文档是HTML而不是XML——我想我已经指定它不是HTML XML。)

不过,下面的第一个文档呈现为HTML。但我一辈子也找不到 第一个和第二个文档的HTTP头或
标记是否存在任何相关差异

(我对它们进行了区分;只有一些无趣的标题不同。)

特别是,这两个文档都指定
内容类型:text/html;字符集=utf-8,
在HTTP头和as
标记中

(除了HTTP头和标记以及可能的文件后缀之外,浏览器是否还会检查其他内容来派生内容类型?)

调试某些JavaScript代码时:
document.constructor==XMLDocument
对于第一个文档为true,
document.constructor==HTMLDocument
第二个值为true

浏览器:谷歌Chrome9.0.597.83测试版

下面是第一个文档及其HTTP头,如
curl
:(这将生成HTML)

$curl-v-vhttp://localhost/foo/content-type-html-test.html |头部-n10
*即将连接()到本地主机端口80(#0)
*正在尝试127.0.0.1。。。有联系的
*已连接到本地主机(127.0.0.1)端口80(#0)
>GET/foo/content-type-html-test.html HTTP/1.1
> ...
第二个:(结果为XML)

$curl-v-vhttp://localhost:8080/0/about.html |头部-n10
*即将连接()到本地主机端口8080(#0)
*正在尝试127.0.0.1。。。有联系的
*已连接到本地主机(127.0.0.1)端口8080(#0)
>GET/0/about.html HTTP/1.1
> ...
今天早上我读了你的问题,看不出问题出在哪里,但现在我看到了你的编辑,我想我知道问题出在哪里了。这是Firefox中的典型请求(使用):

注意行
接受:
。我怀疑您的服务器正在向curl发送
text/html
,因为它没有明确声明它可以支持
application/xhtml+xml
。由于Firefox(可能还有其他非IE浏览器)确实声明了对它的支持,所以服务器会发送该内容类型


请注意,对于web服务器来说,这通常是完全合理的,因此不是真正的配置错误,但我建议解决方案是将Jetty配置为始终以
text/html
的形式发送,无论请求上的
Accept:
标题是什么。

现在web服务器向所有浏览器发送html而不是XHTML。我使用的Web框架是Lift Web,我不得不在Lift Web的Boot.scala中添加这一行:

LiftRules.htmlProperties.default.set(
        (r: Req) => new Html5Properties(r.userAgent))
如下所述:

(我认为你还需要做一些事情:)

服务器现在显示
内容类型:text/html;字符集=utf-8

而不是
application/xml


现在文档呈现为HTML5。

您尝试过其他浏览器吗?你是故意使用HTML5吗?嗨,雅罗斯拉夫:是的,是的。Firefox还将文档解释为XML。Opera作为HTML。--然而!我最近用Wireshark嗅探了一下,注意到我的Web服务器回答:application/xhtml+xml;字符集=utf-8。浏览器可能会发送一些标头(例如,Accept和User Agent),导致Web服务器的行为不同。因此,
curl
的结果可能是误导性的!感谢您提供有关Curl和Firefox的信息。我使用的Web框架实际上是Lift Web(用Scala编程语言编写)。Lift Web附带嵌入式Jetty服务器。我添加了几行代码,使Lift Web发送HTML而不是XHTML;见我的答复。
$ 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> -->
GET / HTTP/1.1
Host: stackoverflow.com
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.14) Gecko/20110301 Fedora/3.6.14-1.fc14 Firefox/3.6.14
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
LiftRules.htmlProperties.default.set(
        (r: Req) => new Html5Properties(r.userAgent))