zoukankan      html  css  js  c++  java
  • 遇到一个很诡异的问题,求解答

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

          问题是这样的,我使用的技术平台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">

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


  • 相关阅读:
    【转】C++多继承的细节
    【转】CVE-2010-4258 漏洞分析
    【转】cve-2013-2094 perf_event_open 漏洞分析
    android CVE 漏洞汇总
    ExecutorService中submit和execute的区别
    线程池之ThreadPoolExecutor使用
    postman接口自动化,环境变量的用法详解(附postman常用的方法)转
    件测试专家分享III GUI自动化测试相关
    Linux上运行Jmeter
    时间复杂度和空间复杂度计算
  • 原文地址:https://www.cnblogs.com/yangyy753/p/2250088.html
Copyright © 2011-2022 走看看