当我使用
<form method="post" enctype="text/plain" action="proc.php">
表单数据无法正确发送到proc.php文件。为什么?问题是什么?为什么我不能在post中使用文本/纯文本编码,但可以在get方法中使用它?
[修订]
答案是,因为PHP无法处理它(并且它不是bug):
https://bugs.php.net/bug.php?id=33741
Valid values for enctype in <form> tag are:
application/x-www-form-urlencoded
multipart/form-data
第一个是默认值,第二个仅在上载文件时才需要。
@Alohci 提供了解释,为什么PHP不填充$_POST
数组,而是将值存储在变量中$HTTP_RAW_POST_DATA
。
text/plain
enctype 可能会出错的示例:
file1.php:
<form method="post" enctype="text/plain" action="file2.php">
<textarea name="input1">abc
input2=def</textarea>
<input name="input2" value="ghi" />
<input type="submit">
</form>
file2.php:
<?php
print($HTTP_RAW_POST_DATA);
?>
结果:
input1=abc
input2=def
input2=ghi
无法区分input1
和input2
变量的值是什么。有可能
abc\r\ninput2=def
,input2 = ghi
以及abc
,input2 =def\r\ninput2=ghi
使用前面提到的其他两种编码时,没有这种问题。
GET和POST之间的区别:
enctype="text/plain"
,浏览器也会忽略它;您可以使用Wireshark对其进行测试嗅探请求数据包),text/plain
或形式发送它们application/x-www-form-urlencoded
,但是第二个是唯一的明确解决方案。请求类型:POST 标头: Content-Type:text/plain 下面是我尝试的,但我收到了400个坏请求 有人能帮助我如何传递cookie在头和原始文本在正文。
我正在尝试遵循Jersey文档,以便在发生错误时启用非200响应(https://Jersey.java.net/documentation/latest/representations.html#D0E3586) 我的代码看起来像: 不幸的是,这会产生以下错误: [2015-02-01T16:13:02.157+0000][glassfish 4.1][严重][][org.glassfish.j
问题内容: 我在使用Hibernate和PostgreSQL进行生产以及使用HSQLDB进行测试时遇到问题。 我正在使用自上而下的方法让Hibernate创建数据库架构。 我也在使用注释;hibernate.cfg.xml的映射部分仅包含诸如 Hibernate默认值之类的行,以将PostgreSQL上的String变量转换为character changes(255),这在某些情况下对我来说是不
问题内容: 使用内容类型application / json通过文本/纯文本发送序列化为json的对象有什么性能优势?我知道许多框架(例如Spring)都可以根据内容类型映射和序列化数据,但是总的来说,我发现此过程非常简单,因此对于在JSON对象上使用application / json而不是text / plain的应用,这并不是一个令人信服的理由。 。 问题答案: 假设您正在谈论使用JSON与
根据文档,响应自动作为JSON、XML或字符串对象提供,具体取决于响应内容。 在我的例子中,我的响应的内容类型为text/plain 这在我将字符串转换为响应,然后验证的地方工作(我已经逃过了所有的反斜杠) 这是失败的。当响应也可用作字符串时,为什么会失败 com.intuit.karate.exception.KarateExc0019:路径: $[*], 实际:["a. b. c匹配\"(\d
我需要使用java应用程序设置剪贴板内容,以便用户可以使用两种MIME类型。这将允许用户粘贴他们想要的文本版本。 我发现了一个适用于JavaScript的例子,我希望有一个等效的Java。 JavaScript示例: 这基本上就是我在Java应用程序中拥有的: 我知道如何设置内容,可以是“text/plain”字符串,也可以是“text/html”字符串。上面的Java示例将在剪贴板中放置一个纯文