2016-09-20 86 views
1

我在本地主機中有一個$ http請求,它調用某個api的url。我在執行呼叫時出錯預檢的響應在角度發佈請求上有無效的HTTP狀態代碼403

Response for preflight has invalid HTTP status code 403 

我可以使用角度來做任何事情,以便我可以解決此問題嗎?我有鍍鉻的CROS插件,允許跨起源請求

$http({ 
       method: 'POST', 
       url: url, 
       data:data1, 
       headers: { 
        'Access-Control-Allow-Origin': '*',     
       } 
      }) 
+0

什麼是服務器端腳本? –

+0

403是禁止訪問... –

+0

這是服務器端腳本/代碼,需要將允許源添加到他們的代碼。 – Olantobi

回答

0

好了,所以這裏就是我想通了這一點。這一切都與CORS政策有關。在POST請求之前,Chrome執行預檢OPTIONS請求,應該在實際請求之前處理並確認服務器。現在這真的不是我想要的這樣一個簡單的服務器。因此,重新設置客戶端頭可以防止預檢:

app.config(function ($httpProvider) { 
    $httpProvider.defaults.headers.common = {}; 
    $httpProvider.defaults.headers.post = {}; 
    $httpProvider.defaults.headers.put = {}; 
    $httpProvider.defaults.headers.patch = {}; 
}); 

瀏覽器現在會直接發送POST。希望這可以幫助很多人...我真正的問題是不夠了解CORS。

鏈接到一個很好的解釋:http://www.html5rocks.com/en/tutorials/cors/

榮譽給這個答案顯示我的方式。 AngularJS POST Fails: Response for preflight has invalid HTTP status code 404

+0

有沒有像jQuery這樣的解決方案? – jDub9

4

如果您使用java restful controller作爲您的服務器。 你可以參考https://spring.io/guides/gs/rest-service-cors/

我在我的控制器上加了@CrossOrigin(origins =「*」),它工作正常。基本上,你不能在客戶端做任何事情。

+0

這對我有效。 Java代碼中的控制器方法長期保留此註釋會帶來什麼風險? – jDub9

0

我有這樣的代碼在angularjs:

$http.post('http://localhost:8080/employee/' 
     , $scope.alumno 
     ,{headers: {'Content-Type': 'application/json'}} 
     ).success(function(data){ 

      if (data.err === false) { 
       $scope.actualizado = true; 

       setTimeout(function() { 
        $scope.actualizado = false; 
        $scope.$apply(); 
       }, 3500); 

      }; 
     }); 

我的API有這樣的數據:

//Add employee: 
Url: http://localhost:8080/employee 
Type request: POST 
Add a new employee: 
{ 
"firstName": "Javier", 
"lastName": "Piedra", 
}` 

我用chrone與擴展可用CORS爲讓所有完美的,但發佈此示例錯誤:

XMLHttpRequest cannot load http://localhost:8080/employee/. Response for 
preflight has invalid HTTP status code 403 

在我的app.config使用:

app.config(function($routeProvider,$httpProvider){ 

$httpProvider.defaults.headers.common = {}; 
$httpProvider.defaults.headers.post = {}; 
$httpProvider.defaults.headers.put = {}; 
$httpProvider.defaults.headers.patch = {}; 

或許這可以爲你的問題的解決方案。

Regards

+0

如果您有新問題,請點擊[問問題](https://stackoverflow.com/questions/ask)按鈕。如果有助於提供上下文,請包含此問題的鏈接。 - [來自評論](/ review/low-quality-posts/16301631) –

+0

謝謝。我不能問:你已經達到了你的問題限制。問候 – juanitourquiza

相關問題