2016-06-06 54 views
0

設置頁眉的作品時,我通過gradle這個建設項目的war並將其部署到Tomcat,但由於某些原因,當我旋轉起來的WebPack發展的服務器進行測試,我得到的錯誤:爲什麼在webpack開發過程中不能使用angular2/http設置標題?

EXCEPTION: SyntaxError: Failed to execute 'setRequestHeader' on 
'XMLHttpRequest': 'Bearer xxx.yyy.zzz' is not a valid HTTP header field value. 
in [null] (browser_adapter.ts:73). 

令人沮喪的事情這是一直間歇的。首先,我有一個只有'xxx.yyy'的智威湯遜,它的工作。然後突然它沒有。然後我意識到我可能需要包含一個假簽名。所以我把它改爲'xxx.yyy.zzz',它工作!然後突然它沒有。然後,我想也許假簽名仍然是JWT其餘部分的適當長度。所以我增加了長度,並且它工作。現在它不。

這裏是我的DEV-代理settings.js:

module.exports = { 
    settings: { 
     '/*': { 
      target: 'http://localhost:3000/', 
      headers: { 
       "Access-Control-Allow-Origin": "*", 
       "Access-Control-Allow-Methods": "GET, POST", 
       "Access-Control-Allow-Headers": "Content-Type, Authorization" 
      } 
     } 
    } 
}; 

這裏是我使用angular2/HTTP

import {Headers, Http, RequestMethod} from 'angular2/http'; 
import {RequestOptions, Response} from 'angular2/http'; 

... 

var headers = new Headers({ 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer xxx.yyy.zzz' 
}); 
var options = new RequestOptions({ 
    headers: headers, 
    method: RequestMethod.Get, 
    url: '/some/url' 
}); 
let httpResponse = this.http.request(options.url, options).map(...); 

我缺少的東西的?

+0

聽起來類似https://github.com/danialfarid/ng-file-upload/issues/98,http://stackoverflow.com/questions/31823781/angularjs-oauth-error-failed-to- execute-setrequestheader-on-xmlhttprequest –

+1

您是否真的嘗試將'xxx.yyy.zzz'作爲承載令牌值,或僅使用生成的值。生成的值可能包含無效字符。 –

+1

我用'承載eeeeeeeeeeeeeeeeeeeee.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.blablablafakesignatureblablablanotrealblabl'。我改變的唯一部分是簽名,但剩下的部分由我的服務器代碼生成,當我實際部署它時,該代碼會生效。但由於某種原因,當我使用dev-proxy-server時會失敗。 – SnoopDougg

回答

1

我添加的假簽名有一個無效字符。我不確定哪個字符不被允許,但我使用的假簽名是blablablafakesignatureblablablanotrealblabl。將其更改爲eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee修復了它。

我還爲我的webpack配置文件的devServer配置添加了允許標題的描述。不知道這是否也有幫助,但我再也看不到這個錯誤了。

devServer: { 
    port: metadata.port, 
    host: metadata.host, 
    // contentBase: 'src/', 
    historyApiFallback: true, 
    watchOptions: { aggregateTimeout: 300, poll: 1000 }, 
    headers: { 
     "Access-Control-Allow-Origin": "*", 
     "Access-Control-Allow-Methods": "GET, POST", 
     "Access-Control-Allow-Headers": "Content-Type, Authorization" 
    }, 
    proxy: proxySettings.settings 
}, 
+0

哈哈哈,現在又神奇地停了下來。如果它不那麼煩人,這將是有趣的。但我想我已經找到了解決辦法 - 每當網絡包的服務器突然決定它不再喜歡頭時,就更改簽名。我不確定發生了什麼問題,網絡包的開發服務器最初接受並最終拒絕了有效的頭文件,但是每次看起來只是修改了頭文件。 – SnoopDougg

相關問題