Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Internet explorer 播放框架Internet Explorer解析器错误_Internet Explorer_Playframework_Html Parsing - Fatal编程技术网

Internet explorer 播放框架Internet Explorer解析器错误

Internet explorer 播放框架Internet Explorer解析器错误,internet-explorer,playframework,html-parsing,Internet Explorer,Playframework,Html Parsing,对于请求“POST/”[解析应用程序时出错/x-www-form-urlencoded] 我只在IE上遇到这个错误。所有其他浏览器都会处理这个错误,而不会像婴儿一样哭哭啼啼。试图用谷歌搜索这个错误,但找不到任何有用的东西。你知道应该怎么做才能避免吗?也许我在框架的一般使用中犯了一些我不知道的错误?好的,我已经调试了剧本!我已经找到了导致这个错误的代码。这是ContentTypes.scala中编码的def TolerantForMurlen方法 抛出了一个NoTouchElementExcept

对于请求“POST/”[解析应用程序时出错/x-www-form-urlencoded]


我只在IE上遇到这个错误。所有其他浏览器都会处理这个错误,而不会像婴儿一样哭哭啼啼。试图用谷歌搜索这个错误,但找不到任何有用的东西。你知道应该怎么做才能避免吗?也许我在框架的一般使用中犯了一些我不知道的错误?

好的,我已经调试了剧本!我已经找到了导致这个错误的代码。这是ContentTypes.scala中编码的def TolerantForMurlen方法
抛出了一个NoTouchElementException,这是由一个非关闭的
引起的,我在IE10中也遇到了同样的情况,我跟踪到帖子内容是:

 email=fred@example.com&password=asd&=
最后一个“&=”会导致FormUrlEncodedParser中出现异常,该异常会被吞没并转换为BodyParsers.tolerantFormUrlEncoded中的BadRequest

总之,据我所知,这是两个bug的组合:

  • MSIE10出于任何原因发送这两个字符(似乎有几个可能的原因)

  • Play不允许查询字符串中的无用字符(通常情况下,服务器应用程序应忽略URL中的未知参数)。我将此报告为一个bug:


在我的例子中,“whatever reason”是一个没有“name”属性的标记。在GafrieldKlon的例子中,这是一个未关闭的,以防万一这对其他人有帮助,我遇到了这个问题,调试后我发现javascript验证库引入了一个隐藏的输入,IE随后对其进行了编码

图书馆来自这里:

我碰巧使用了play 2.2.2,所以当2.3.0发布时,这应该不是问题


我的修复方法是编辑验证脚本并注释掉添加的隐藏输入。在我的用例中,这段代码无论如何都不是必需的。

我能够在受控环境中重新创建此行为(使用普通表单和PHP服务器)。它发生在IE中,但不是Chrome(没有测试Firefox或Safari)。问题仅仅部分在于Play对表单数据的处理

造成这种情况的原因是:IE似乎将每个表单字段与名称属性(空或不空)捆绑在一起,并将其放入post数据中。这意味着将表示具有空名称属性(
name=”“
)的任何表单元素。这是基于“成功控制”(successfullcontrols)的思想。规范不清楚(从我所能找到的情况来看)拥有“控件名”是否意味着只存在一个name属性,或者拥有一个具有非空值的name属性。IE似乎从字面上理解了这一点,收集了所有信息,而其他人则做了一个额外的步骤,过滤掉了带有空名称的控件

给出以下示例表格:

<form action="<?= $_SERVER['PHP_SELF']?>" method="POST">
    <label>
        Name
        <input name="name"/>
    </label>
    <label>
        Email
        <input name="email"/>
    </label>
    <button type="submit" name="">Send 1</button>
</form>

你能不能再添加一些细节,比如代码示例和错误的完整堆栈跟踪。我现在在2.1版的IE9上也得到了同样的结果!游戏2.0.4和IE9也一样。游戏中没有日志语句,也没有例外。和GarfieldKlon一样,只有在IE10上。有没有快速修复方法?在我的例子中,submit按钮上没有名字。添加名称修复了该问题。