2017-10-05 101 views
0

我在appache服務器上部署的球衣一個Web服務,我試圖連接到該服務器,但我得到了以下錯誤:無法與REST Web服務連接

Failed to load http://192.168.1.200:8199/CheckinnWeb/webapi/myresource/query: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. 

我service.ts文件代碼如下

getlogin(): Observable<ILogin[]> { \t \t \t 
 
\t \t return this._http 
 
       .get(this._loginurl, this.headers) 
 
       .map((response: Response) => <ILogin[]> response.json()) 
 
       .catch(this.handleError); 
 
    }

這是我的服務器的URL

_loginurl='http://192.168.1.200:8199/CheckinnWeb/webapi/myresource/'+this.encodedString; 

請幫我解決這個問題..謝謝!!

+0

是什麼'this.encodedString'?看起來像一個SQL查詢我 – Niladri

+0

看起來像一個CORS問題給我。您是否曾嘗試向'this.headers'添加'Access-Control-Allow-Origin'請求標頭?檢查apache託管服務是否允許跨域請求 – Niladri

+0

這不是一個明確的問題!你應該提供更多的細節。 因爲我看到這是你的端點「... webapi/myresource」 ,這是你的參數「select ....」我是對嗎?如果這不是一個參數,那麼使用?請求參數! 問題出在您的端點上, 您能調試您的端點嗎? 你的服務網址迴應什麼? –

回答

0

嘗試這個

getlogin(): Promise<ILogin[]> { 
    return this.http.get(this._loginurl) 
     .toPromise().then(response => <ILogin[]>response.json().data) 
     .catch(this.handleError); 
} 
0

錯誤清清楚楚地寫着:

否「訪問控制允許來源」標頭出現在所請求的資源。

這不是angular2本身的錯誤。但它更多的與服務器端的CORS配置有關。

您必須在您的服務響應中設置Access-Control-Allow-Origin標題。您可以設置類似下面它說你基本上允許任何資源:

Access-Control-Allow-Origin: * 
0

試試這個:

import {Headers} from "@angular/http"; 

let headers=new Headers({ 
    }); 
    headers.append('Accept', 'application/json'); 
    headers.append('Access-Control-Allow-Origin','*'); 

    getlogin(): Promise<ILogin[]> { 
    return this.http.get(this._loginurl,{headers:headers})) 
     .toPromise().then(response => <ILogin[]>response.json().data) 
     .catch(this.handleError); 
}