【问题标题】: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"。

【问题讨论】:

    标签: jquery header form-submit


    【解决方案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 请求所源自的域不同的域。这是真的吗?
    • 如果该域允许您可以。 stackoverflow.com/questions/10636611/…
    【解决方案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 对象。

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 2021-02-20
      • 2014-04-12
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多