如何从铁形聚合物获得响应头

时间:2017-08-15 06:02:30

标签: javascript polymer polymer-2.x

我有一张表格,我这样提交:

Redirect "/" "https://example.com/"

我知道我可以访问响应正文的方式:

form.addEventListener("iron-form-response", function(event) {   
    //How can I access response headers here?                      
});      

form.submit();

但我想要的是服务器响应标头。我需要它,因为这个响应可能在标题中包含一些令牌,我必须将它存储在cookie中。

1 个答案:

答案 0 :(得分:1)

event.detail实际上是<iron-request>,通过e.detail.xhr公开基础XMLHTTPRequest,允许您使用getResponseHeader(name)作为特定标题:< / p>

_onResponse(e) {
  const header = e.detail.xhr.getResponseHeader('X-Special-Header');
  ...
}

示例:

<dom-module id="x-foo">
  <template>
    <iron-form on-iron-form-response="_onResponse">
      <form method="post"
            action="//httpbin.org/post">
        <label for="myName">My name</label>
        <input type="text" id="myName" name="name">
        <button>Submit</button>
      </form>
    </iron-form>
  </template>

  <script>
  class XFoo extends Polymer.Element {
    static get is() { return 'x-foo'; }

    _onResponse(e) {
      console.debug('response header("Content-Type")', e.detail.xhr.getResponseHeader('Content-Type'));
      console.debug('all response headers', e.detail.xhr.getAllResponseHeaders())
    }
  }
  customElements.define(XFoo.is, XFoo);
  </script>
</dom-module>

demo