2017-05-31 63 views
0

我正在anghular 4 PROJET,我有一個關於HTTP請求和響應從像服務器問題:響應預檢請求未通過訪問控制

的XMLHttpRequest不能加載 http://192.168.1.110:8000/updateUser/Contacts/ebba56e9-72eb-971a-9bb6-552de74d0d69。對預檢請求的響應未通過訪問控制檢查:否 「所請求的 」資源上存在「Access-Control-Allow-Origin」標頭。原因'http://localhost:4200'因此不允許 訪問。響應有HTTP狀態代碼405

我必須看看這個prblem和我發現我需要從服務器端添加頁眉attribut,我做到了,我看到的是,響應包含這個頭: HEADERS

Access-Control-Allow-Credentials: true 
Access-Control-Allow-Headers: * 
Access-Control-Allow-Methods: GET, POST, OPTIONS,PUT 
Access-Control-Allow-Origin: * 
Cache-Control: no-cache 
Connection: close 
Content-Type: application/json 
Date: 2017 May 31 13:15:48 
Host: 192.168.1.110:8000 
X-Debug-Token: fbb39b 
X-Debug-Token-Link: http://192.168.1.110:8000/_profiler/fbb39b 
X-Powered-By: PHP/5.6.30 

我的控制器:

/** 
    * 
    * @Get("/getMenu/{id}") 
    */ 
    public function getMenuAction($id ,Request $request){ 
     $fr= $request->get('fr') ; 
     $url = $this->container->getParameter('serverUri'). wsUrl::Ws_GetMenu . $uniquecsoecid. '?fr='.$fr; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, wsUrl::ws_Headers); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     $response = curl_exec($ch); 
     $res = new Response(); 
     $res->setCharset('UTF-8'); 
     $res->headers->set('Access-Control-Allow-Method','PUT'); 
     $res->headers->set('Access-Control-Allow-Credentials','true'); 
     $res->headers->set('Access-Control-Allow-Origin','*'); 
     $res->headers->set('Access-Control-Allow-Headers','auth_token'); 
     $res->setContent($response); 
     return $res ; 
    } 

更多細節我使用的symfony調用另一個後端,並返回該後端的結果Web服務,以我的角度CLIEN t方面的項目。

但是我感到困惑的是,如果我嘗試從restlet或郵遞員(鉻擴展名)發送請求並從我的角度調用Web服務根本無法正常工作,那麼Web服務將正常工作。 什麼是錯誤的,請一定幫助

回答

0

由於CORS你正在得到錯誤。郵差不受限制。但是,在WebService中設置標頭應該足以讓您從客戶端應用程序中使用它。

您使用的瀏覽器是?有時Chrome對localhost和CORS有點太敏感。如果是這樣,你可以嘗試在不同的瀏覽器?這裏是解決它的工具:Chrome CORS Extension

+0

我得到405錯誤,byt我使用鉻瀏覽器的方式 –

相關問題