自动提交表单时,如何添加标题?

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 对象。

【讨论】:

以上是关于自动提交表单时,如何添加标题?的主要内容,如果未能解决你的问题,请参考以下文章

如何自动加载最后一次提交(单次提交)?

下拉框更改时提交表单 - 不做任何事情

使用 vba 和 xmlhttp 自动提交网站上的帖子表单

提交表单后如何自动创建客户表

自动提交表单

如何使用 Multer 提交带有可选文件提交的表单?