2016-12-04 146 views
0

離子2節點快速-CORS問題

我使用的登錄提供,但是當我訪問控制設置爲

res.header('Access-Control-Allow-Origin', '*');

不工作

但它在我使用時正常工作

res.header('Access-Control-Allow-Origin', 'http://localhost:8100');

這是工作

,但現在我想部署我的應用程序了電話設備,我需要將其設置爲外卡res.header('Access-Control-Allow-Origin', '*');上。因爲我的手機上的應用程序不能在http://localhost:8100上工作

任何人都可以幫助我解決這個問題嗎?

+0

可能會幫助你http://stackoverflow.com/questions/36002979/xmlhttprequest-cannot-load-and-response-for-preflight-has-invalid-http-status-co –

回答

2

如果您製作的是preflighted request,則在Access-Control-Allow-Origin標頭中禁止使用通配符。

您可以閱讀Origin請求標頭以找出原點。然後,您可以根據允許的來源列表對其進行測試(您也可以假設任何來源都可以,但對於預檢的請求,完全公開訪問很可能存在安全風險)。最後,您可以將其複製到Access-Control-Allow-Origin響應標頭中。

-1

你的應用程序的HTTP請求是怎樣的?

在此article中查找「CORS請求的類型」。

如果你的HTTP請求很簡單,即

  • 方法是HEADGET,或POST
  • 只有這些頭
    • Accept
    • Accept-Language
    • Content-Language
    • Last-Event-ID
    • application/x-www-url-encodedContent-Typemultipart/form-data,或text/plain

如果你的HTTP請求很簡單,不需要預檢。並且Access-Control-Allow-Origin*被移動應用接受。

否則,將進行預檢請求(即OPTION請求),*Access-Control-Allow-Origin將被忽略。它必須完全指定爲http://localhost:8100

+0

我發現了這個問題,這是因爲我在請求中使用了'withCredentials:true'。它轉向預檢請求。所以我不能使用'*'。我想使用會話存儲一些認證數據。如果我在設備上測試,它不會工作'http:// localhost:8100',我該如何解決這個問題? – programmer