自动提交表单时,如何添加标题?
Posted
技术标签:
【中文标题】自动提交表单时,如何添加标题?【英文标题】:When auto-submitting a form, how do I add a header? 【发布时间】:2015-10-20 19:03:33 【问题描述】:我使用的是 JQuery 1.9.2,虽然这个问题可能与 JQuery 无关。我正在使用此代码自动提交 html 表单……
<script type="text/javascript">
$(function()
$('#autolaunch').submit();
);
</script>
…
<form id="autolaunch" name="autolaunch" action="$ltiLaunchUrl" method="post">
<input type="hidden" name="lti_version" value="$lti_version" />
<input type="hidden" name="lti_message_type" value="$lti_message_type" />
…
<input type="hidden" name="lis_person_name_given" value="$lis_person_name_given" />
</form>
表单的操作是与访问此页面的服务器不同的域。我的问题是,如何在提交此数据时添加标题?我要添加的标头看起来像 name = "LTI-Authorization" 和 value = "Token consumerKey:consumerSecret"。
【问题讨论】:
【参考方案1】:您不能在表单中添加标题。
代替标题添加一个新的隐藏输入。
<input type="hidden" name="LTI-Authorization" value="Token consumerKey:consumerSecret" />
您可以使用 ajax 请求或 XHR 添加标头。
$.ajax(
type: 'POST',
url: url,
headers:
"LTI-Authorization":"Token consumerKey:consumerSecret"
,
data:
"lti_version":"$lti_version" // all other data
).done(function(data)
alert(data);
);
【讨论】:
这是否会使传出请求看起来与添加了标头一样? @DaveA 不,不一样。您必须检查后端而不是标头中的输入值。您可以使用ajax请求添加标头,请参阅更新的答案。 另外,我认为您不能将 AJAX 请求提交到与 AJAX 请求所源自的域不同的域。这是真的吗? 如果该域允许您可以。 ***.com/questions/10636611/… ***.com/questions/19085965/…【参考方案2】:您可以在 Jquery 中添加一个标头,该标头在您执行 Jquery form submit 时需要处理 javascript
XMLHttpRequest 对象。我已经回答了同样的问题here。
你会做这样的事情:
xhttp.open("POST", "/v1/target-endpoint.do", true);
xhttp.setRequestHeader("custom_header", "test value of custom header");
xhttp.send($("#custom_form").serialize());
其中 xhttp 是您的 XMLHttpRequest
对象。
【讨论】:
以上是关于自动提交表单时,如何添加标题?的主要内容,如果未能解决你的问题,请参考以下文章