为什么我从 IE 11.0 客户端 post 获取数据时得到 "GET" 方法信息?
Why do I get "GET" method information when I post a data from IE 11.0 client?
我在我的 Android 应用程序中使用 NanoHTTPD 作为 Web 服务器,我在客户端中使用 SubmitCheckedItemsForm()
函数提交一些日期。
在网络服务器客户端,当我在 FireFox 和 Chrome 中启动代码时,我可以收到 "POST" 方法信息,
但是我在 IE 11.0 中启动代码时收到 "GET" 方法信息?为什么?
服务器代码
@Override
public Response serve(IHTTPSession session) {
String uri = session.getUri();
Method method = session.getMethod();
Utility.LogError("Method: "+method);
}
HTML
<form action="" method='post' enctype='multipart/form-data' id="FormForAction">
</form>
JS
function SubmitCheckedItemsForm(action) {
var mytemp = GetArrayOfCheckedItems();
var formID = "#FormForAction";
$(formID).unbind("submit");
alert(mytemp);
$(formID).submit(function (eventObj) {
$(formID).empty();
$('<input />').attr('type', 'hidden')
.attr('name', action)
.attr('value', JSON.stringify(mytemp))
.appendTo(formID);
});
$(".FilenameCheckboxForSelect").prop("checked", false);
$(formID).submit();
}
修改后的JS
function SubmitCheckedItemsForm(action) {
var mytemp = GetArrayOfCheckedItems();
var formID = "#FormForAction";
$(formID).unbind("submit");
alert(mytemp);
$(formID).submit(function (eventObj) {
$(formID).empty();
$('<input />').attr('type', 'hidden')
.attr('name', action)
.attr('value', JSON.stringify(mytemp))
.appendTo(formID);
$('<div>Body</div>').appendTo(formID);
});
$(".FilenameCheckboxForSelect").prop("checked", false);
$(formID).submit();
}
我终于知道了。当您在 Internet Explorer 11 中使用浏览器发送 HTTP POST 请求时。当发送没有消息正文的 HTTP POST 请求时,将使用 GET 方法。这是一个浏览器问题。您也可以在 Microsoft 支持页面上查看它。这里:issue with Form method attribute
那不是你的代码问题,而是浏览器的问题。如果你想尝试,你可以试试这个:
IE中有一个Enabling/Disabling保护模式的选项,这个选项默认为“Internet”区域和“本地Intranet”区域(或其中任何一个)启用。在这两个地方禁用可能会解决问题。
工具 -> Internet 选项 -> 安全 -> Internet/Local Intranet -> 取消选中 "Enable protected mode" 选项。
如果它解决了问题,请尝试一下。
示例代码:
<form action="your_action_page" method="post" enctype='multipart/form-data' id="FormForAction">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
我在我的 Android 应用程序中使用 NanoHTTPD 作为 Web 服务器,我在客户端中使用 SubmitCheckedItemsForm()
函数提交一些日期。
在网络服务器客户端,当我在 FireFox 和 Chrome 中启动代码时,我可以收到 "POST" 方法信息, 但是我在 IE 11.0 中启动代码时收到 "GET" 方法信息?为什么?
服务器代码
@Override
public Response serve(IHTTPSession session) {
String uri = session.getUri();
Method method = session.getMethod();
Utility.LogError("Method: "+method);
}
HTML
<form action="" method='post' enctype='multipart/form-data' id="FormForAction">
</form>
JS
function SubmitCheckedItemsForm(action) {
var mytemp = GetArrayOfCheckedItems();
var formID = "#FormForAction";
$(formID).unbind("submit");
alert(mytemp);
$(formID).submit(function (eventObj) {
$(formID).empty();
$('<input />').attr('type', 'hidden')
.attr('name', action)
.attr('value', JSON.stringify(mytemp))
.appendTo(formID);
});
$(".FilenameCheckboxForSelect").prop("checked", false);
$(formID).submit();
}
修改后的JS
function SubmitCheckedItemsForm(action) {
var mytemp = GetArrayOfCheckedItems();
var formID = "#FormForAction";
$(formID).unbind("submit");
alert(mytemp);
$(formID).submit(function (eventObj) {
$(formID).empty();
$('<input />').attr('type', 'hidden')
.attr('name', action)
.attr('value', JSON.stringify(mytemp))
.appendTo(formID);
$('<div>Body</div>').appendTo(formID);
});
$(".FilenameCheckboxForSelect").prop("checked", false);
$(formID).submit();
}
我终于知道了。当您在 Internet Explorer 11 中使用浏览器发送 HTTP POST 请求时。当发送没有消息正文的 HTTP POST 请求时,将使用 GET 方法。这是一个浏览器问题。您也可以在 Microsoft 支持页面上查看它。这里:issue with Form method attribute
那不是你的代码问题,而是浏览器的问题。如果你想尝试,你可以试试这个:
IE中有一个Enabling/Disabling保护模式的选项,这个选项默认为“Internet”区域和“本地Intranet”区域(或其中任何一个)启用。在这两个地方禁用可能会解决问题。
工具 -> Internet 选项 -> 安全 -> Internet/Local Intranet -> 取消选中 "Enable protected mode" 选项。 如果它解决了问题,请尝试一下。
示例代码:
<form action="your_action_page" method="post" enctype='multipart/form-data' id="FormForAction">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>