enctype =“多部分/表单数据” ie9 和 chrome 的工作方式不同
我想将一些数据发布到另一个域,enctype 等于 multipart/form-data,因为我想要服务器端未修改的数据。 这是我的测试代码:
<textarea name="txt" rows="20" cols="80">
</textarea>
<script>
function x_domain_post(url, data)
{
var dd = document.createElement('div');
var ifrname = "client_proxy";
dd.innerHTML = "<iframe id='" + ifrname + "' name='" + ifrname + "' width=0 height=0 ></iframe>";
document.getElementsByTagName('body')[0].appendChild(dd);
var ifr = document.getElementById(ifrname);
var f = document.createElement('form');
f.action = url;
f.method = "post";
f.enctype = "multipart/form-data";
f.target = ifr.name;
f.innerHTML = f.innerHTML + "<textarea name='request'>default</textarea>";
document.getElementsByTagName("body")[0].appendChild(f);
document.getElementsByName("request")[0].value=data;
f.submit()
setTimeout(function(){document.getElementsByTagName("body")[0].removeChild(f);}, 1000);
}
</script>
<button onclick="x_domain_post('http://192.168.232.128/add', document.getElementsByName('txt')[0].value)">
chrome 中的请求是:
...
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary9zCD31eJSHkdb8ul
...
------WebKitFormBoundary9zCD31eJSHkdb8ul
Content-Disposition: form-data; name="request"
a
b
o
------WebKitFormBoundary9zCD31eJSHkdb8ul--
但在 IE9 中:
POST /add HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
...
request=a%0D%0A%0D%0Ab%0D%0A%0D%0Ao
我们将不胜感激您的任何帮助!
I want to post some data to another domain with the enctype equal to multipart/form-data, because I want the unmodified data in the server side.
Here is my test code:
<textarea name="txt" rows="20" cols="80">
</textarea>
<script>
function x_domain_post(url, data)
{
var dd = document.createElement('div');
var ifrname = "client_proxy";
dd.innerHTML = "<iframe id='" + ifrname + "' name='" + ifrname + "' width=0 height=0 ></iframe>";
document.getElementsByTagName('body')[0].appendChild(dd);
var ifr = document.getElementById(ifrname);
var f = document.createElement('form');
f.action = url;
f.method = "post";
f.enctype = "multipart/form-data";
f.target = ifr.name;
f.innerHTML = f.innerHTML + "<textarea name='request'>default</textarea>";
document.getElementsByTagName("body")[0].appendChild(f);
document.getElementsByName("request")[0].value=data;
f.submit()
setTimeout(function(){document.getElementsByTagName("body")[0].removeChild(f);}, 1000);
}
</script>
<button onclick="x_domain_post('http://192.168.232.128/add', document.getElementsByName('txt')[0].value)">
The request in chrome is:
...
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary9zCD31eJSHkdb8ul
...
------WebKitFormBoundary9zCD31eJSHkdb8ul
Content-Disposition: form-data; name="request"
a
b
o
------WebKitFormBoundary9zCD31eJSHkdb8ul--
But in IE9:
POST /add HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
...
request=a%0D%0A%0D%0Ab%0D%0A%0D%0Ao
Any of your help will be appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这有帮助吗?
http:// /www.bennadel.com/blog/1273-Setting-Form-EncType-Dynamically-To-Multipart-Form-Data-In-IE-Internet-Explorer-.htm
Does this help?
http://www.bennadel.com/blog/1273-Setting-Form-EncType-Dynamically-To-Multipart-Form-Data-In-IE-Internet-Explorer-.htm