遇到一个很诡异的问题,求解答

      今天在接口对接中,遇到一个很诡异的问题,百思不得其解,问了我身边的同事和高手,他们都表示没见过此问题,我也不知道应该怎么去百度这个问题,下面我就大致描述一下这个问题,希望看到我的文章的大神们能给我一些指点。一起学习与进步!

      问题是这样的,我使用的技术平台ASP.NET,以前的一个接口页面,把用到的代码都写在.cs的文件中,所以前台的代码保存住原来程序自动生成的代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UnionCompanyInterface.aspx.cs" Inherits="UnionCompany_UnionCompanyInterface" %>

<!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 id="Head1" runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
</form>

</body>
</html>

由于后台的代码需要显示的值,直接就用Response.Write()出来了,我觉得那些代码冗余了,所以我就把那些不必要的代码都删了,之剩下这一条代码在.aspx页面上:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UnionCompanyInterface.aspx.cs" Inherits="UnionCompany_UnionCompanyInterface" %>

然后,重点来了,我复制原来的接口地址:

http://www.xxx.com/UnionCompanyInterface.aspx?user=%e6%b5%8b%e8%af%95&cid=T123

粘贴到浏览器中,一回车!codeid后面的这个“T123”的值居然自动变成了小写的“t123”

我就纳闷了,这到底是怎么一回事,查了查后台代码,没有转换小写的语句啊,再说了,转换小写也不可能是在url上自动换啊。

然后我在已经回车后的地址栏上,手动把小写的t改成大写的T,回车!居然接口显示正常了!!cid又等于T123了,我真是想不通。。。

最后,我想了想,是不是那些删除过后的代码搞的鬼,于是把文件给还原,接着再贴一遍接口地址到地址栏,回车,接口正常显示!cid的值不会变成小写的t123了。哦!!终于找到事情的真凶,原来真是他们搞的鬼。

我百度了一下他们的资料(可略读):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
声明了文档的根元素是 html,它在公共标识符被定义为 "-//W3C//DTD XHTML 1.0 Transitional//EN" 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的 DTD。如果找不到,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置

DOCTYPE是document type(文档类型)的简写,在web设计中用来说明你用的XHTML或者HTML是什么版本。
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。

DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。

其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。

XHTML 1.0 提供了三种DTD声明可供选择:

* 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

* 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>,完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

* 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD,完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

查了以上的资料,我觉得与我遇到的问题,关系不是很大,可能我还没找到问题的核心。现在还是很纳闷,目前还不能确切的找到相应很好的解答,希望看了我文章的人,能帮我解决这个困扰我的问题。作为一个初学者身份的我,很虚心接受每个人给我的解答与帮助,也感谢所有帮助过我的人,好人一生平安!


原文地址:https://www.cnblogs.com/yangyy753/p/2250088.html