将newlines字符(即 r n)附加到邮政请求中发送的表单字段



我正在编写一些Web表单,这些Web表格测试由学生编写的练习。某些服务器不太适合规格,正如课堂工作所预期的那样。将Windows新的行字符(即rn)附加到浏览器生成的POST请求,因为某些服务器正在执行ReadLine而不是使用Content-Length: header Count,这将很有用。

我正在考虑生成以下请求(来自IE):

POST /Brian HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-GB
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:43
Content-Length: 8
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
location

但是将rn附加到结尾。到目前为止,我尝试这样做的是:

<form> 
Username: <input type="text" name="url" id="url4"
    onChange="document.getElementById('update4').setAttribute('action', 
    'http://localhost:43/' + document.getElementById('url4').value);"> </input> 
</form>
<form id="update4" method="post" action="http://localhost:43/">
Location: <input type="text" name="isindex" id="location5" 
 onChange="document.getElementById('location5').value = 
             document.getElementById('location5').value + '\r\n'"> </input>
<input id="mysubmit3" type="submit" value="go" ></input>
</form>

我知道,将新线附加到事物上可能会很棘手,因此我正在寻找指导。我不希望将Newline字符作为帖子的一部分编码。我只想在POST命令之后发送一个RAW rn来通过。

通过。

文本输入元素仅允许单行文本。根据文本输入的W3C工作草案:

输入 type = text - 文本输入字段

type =&quot;
指定其输入元素是输入元素值的单行平面编辑控件。

...

value =无线断裂的字符串指定此输入元素的值。
value :任何包含无线feed(u 000a," lf")或托架返回(u 000d," cr")字符的字符串。

1

和根据 <input>的mdn文档,其中属性 type ='text':

|类型 |描述 ||-------- |----------------------------------- ||文字|默认值。单行文本字段。线路断路将自动从输入值中删除。| 2

因此,在文本输入元素的值中添加新的线字符基本上是多余的。

替代解决方案可能包括:

  • 添加隐藏的文本区域并设置文本区域的值,以包含具有新行字符的文本字段的值,尽管可能很难防止学生掩盖文本方面并更改价值。请参阅此phpfiddle中所示的。

  • 使用FormData存储表单的值,添加新的行字符,然后使用具有更改的值的FormData提交表单。这可能只能通过使表单异步提交(例如使用Ajax,诸如iframe,其他窗口等)。

可以通过JavaScript添加新的线条,并具有几个不同的技术,包括:

  • 新的线字符:n

console.log("Bobnisncool");

  • 模板文字(请参阅此答案)

console.log(`Bob 
is 
cool.`);

  • string.fromcharcode()

console.log('line 1'+String.fromCharCode(10, 13)+'line 2')


1 https://www.w3.org/tr/2012/wd-html-markup-20120315/input.text.text.html#input.text.text.text.text

2 https://developer.mozilla.org/en-us/docs/web/html/element/element/input/input

您是否尝试过使用实际的textarea而不是键入textarea

而不是:

<input type="textarea" name="isindex" id="location5" 
 onChange="document.getElementByID('location5').value = 
             document.getElementById('location5').value + '\r\n'"> </input>

尝试此

<form> 
 Username: <input type="text" name="url" id="url4"
    onChange="document.getElementById('update4').setAttribute('action', 
    'http://localhost:43/' + document.getElementById('url4').value);"> </input> 
</form>
<form id="update4" method="post" action="http://localhost:43/">
Location: <textarea name="isindex" id="location5" 
 onChange="document.getElementById('location5').value = 
             document.getElementById('location5').value + 'rn'"> </textarea>
<input id="mysubmit3" type="submit" value="go" ></input>
</form>

相关内容

  • 没有找到相关文章

最新更新