如何从 iron-form Polymer 获得响应 headers

How to get response headers from iron-form Polymer

我有一个表格,我是这样提交的:

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

form.submit();

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

event.detail.response

但我想要的是服务器响应headers。我需要它,因为此响应可能包含 headers 一些标记,我必须将其存储在 cookie 中。

event.detail 实际上是一个 <iron-request>, which exposes the underlying XMLHTTPRequest via e.detail.xhr, which allows you to use getResponseHeader(name) 对于特定的 header:

_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