2015-11-20 25 views
1

我正在使用最新的Polymer(1.2.0),并且在从iron-localstorage到iron-ajax标头字段的数据绑定中遇到问题。我在检查请求时看不到授权标头。我刚刚创建了一个没有数据绑定的有效头对象时验证了请求的作用。无法将localstorage绑定到iron-ajax标头

我做错了什么,还是不是这样设计的?

<iron-localstorage name="userToken" value="{{localtoken}}" use-raw></iron-localstorage> 

<iron-ajax url="api/twitter/v1/private/gettweets" last-response="{{data}}" auto 
      headers= '{"Authorization":"Bearer [[localtoken]]}"' 
      handle-as="json"> 
</iron-ajax> 
<iron-list items="[[data.futuretweets]]" as="item"> 
    <template> 
     <div> 
      datetime: <span>[[item.datetime]]</span> 
      text: <span>[[item.text]]</span> 
     </div> 
    </template> 
</iron-list> 

回答

1

我觉得你在你的化合物结合有一个错字的错误,这里是一个修正版本:

<iron-ajax url="api/twitter/v1/private/gettweets" last-response="{{data}}" auto 
      headers= '{"Authorization":"Bearer [[localtoken]]"}' 
      handle-as="json"> 
</iron-ajax> 

[编辑],因为它不工作,尝试用这样的计算函数:

<iron-ajax url="api/twitter/v1/private/gettweets" last-response="{{data}}" auto 
      headers='_computeHeaders(localtoken)' 
      handle-as="json"> 
</iron-ajax> 

其中

_computeHeaders(localtoken) { 
    return {"Authorization": "Bearer " + localtoken}; 
} 
+0

@mrbradford你解决了你的问题吗? –

+0

嗨!我确实修复了错字 - 不幸的是,它没有解决问题。仍然没有发送授权标头。没有控制台错误,除了缺少Auth标头时的500个服务器回复。 – MrBradford

+0

然后,只需尝试一个计算函数... –

1

不应:

_computeHeaders(localtoken) { 
    return '{"Authorization":"Bearer ' + localtoken + '"}'; 
} 

相反是:

_computeHeaders: function(localtoken){ 
    return '{"Authorization":"Bearer ' + localtoken + '"}'; 
} 
+0

两者都是有效的,但后者在更多浏览器中受支持,因为前者是ES6改进的对象字面量语法的一部分。 –

1

我发现了一点解决方法。 我使用环回与启用身份验证服务,我保存身份验证令牌iron-localstorage。我发现的问题是iron-ajax的“auto”让iron-ajax参数中的任何(几乎)参数都发生变化时启动请求。当请求启动localstorage值尚未填充尚未

<iron-localstorage name="appdata" value="{{user}}"></iron-localstorage> 

<iron-ajax auto="{{user.id}}" headers$='{"Authorization" :"{{user.id}}"}' url="/api/data" handle-as="json" last-response="{{data}}"></iron-ajax> 

的解决办法是内auto="{{user.id}}"。在用户未加载时,user.id为false。加载时,它会变成真实的东西。这也会导致iron-ajax标头属性发生变化,并导致“自动”请求发送被触发。

+0

我以为$ =仅适用于基本的HTML属性绑定? –