2017-09-29 93 views
0

我正在調用運行在不同本地主機上的nodeJS REST API到角度應用中, 在postman中我得到了預期的結果。但是在角度應用程序中,它由於403錯誤而下降,這是由於預檢(針對預檢的響應具有無效的HTTP狀態代碼403)而發生的。我嘗試使用$ httpprovider刪除一些默認頭文件,並試圖在訪問控制允許區域中使用正確的服務器名稱而不是通配符(*),結果什麼都不起作用。尋求幫助! 沒有針對預檢請求的身份驗證。 發佈我的REQ-respo扣Req-Responce snap403在Angular js1中禁止Rest API(節點js)

+0

的可能的複製[XMLHttpRequest的無法加載....預檢的響應具有無效的HTTP狀態代碼401](https://stackoverflow.com/questions/38326128/xmlhttprequest-cannot-load-response-for-preflight-has-invalid-http-status-c ) – sp00m

+2

如果您試圖使用Angular解決它,那麼什麼都不會發生來幫你。它需要固定的服務器端。這是'CORS'問題。' – Ved

+0

謝謝@ Ved,Vijayanath Viswanathan,sp00m –

回答

0

通過處理選項在服務器端,我能夠解決問題的要求, This post solved my problem

通過添加的代碼下面一行

app.use(function (req,res,next){ 
    if (req.method === 'OPTIONS') { 
      console.log('!OPTIONS'); 
      var headers = {}; 
      // IE8 does not allow domains to be specified, just the * 
      // headers["Access-Control-Allow-Origin"] = req.headers.origin; 
      headers["Access-Control-Allow-Origin"] = "*"; 
      headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, OPTIONS"; 
      headers["Access-Control-Allow-Credentials"] = false; 
      headers["Access-Control-Max-Age"] = '86400'; // 24 hours 
      headers["Access-Control-Allow-Headers"] = "X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept"; 
      res.writeHead(200, headers); 
      res.end(); 
    } else { 
    //... 
    other requests 
    } 
});