簡體   English   中英

在Angular2中使用RabbitMQ RESTful服務

[英]Using RabbitMQ RESTful services with Angular2

我目前正在開發一個項目,在這里我需要訪問所有與確定的Rabbitmq連接的隊列。 為此,我試圖使用Rabbitmq的RESTful服務獲取此信息。 我嘗試使用POSTman做一些示例,例如使用guest:guest作為用戶名和密碼向localhost:15672 / api / connections發送請求,一切正常。 但是,當我嘗試使用Angular上的項目發送相同的請求時,出現以下錯誤消息:

zone.js:2177 XMLHttpRequest無法加載localhost:15672 / api / overview。 跨源請求僅支持以下協議方案:http,數據,chrome,chrome擴展名,https。

我對此錯誤進行了一些研究,發現所有解決方案都建議我允許我的瀏覽器在Chrome上發出CORS請求,但是此解決方案要求我更改每一個運行我的項目的瀏覽器,但這種方法無效。 有人知道我可以使用Angular 2應用程序獲取Rabbitmq的信息的另一種方式嗎?

提前致謝!

編輯:

另外,如果我在請求的開頭添加“ http://”,則錯誤消息將更改為:

XMLHttpRequest無法加載http:// localhost:15672 / api / overview 對預檢請求的響應未通過訪問控制檢查:請求的資源上不存在“ Access-Control-Allow-Origin”標頭。 因此,不允許訪問源' http:// localhost:4200 '。 響應的HTTP狀態碼為405。

這是我的代碼的樣子:

@Injectable()
export class RabbitHttp {

protected headers: Headers;

constructor(private http: Http, private router: Router,
    public globalService: GlobalService
) {
}
  public get(url: string, parameters: any): Promise<Response> {
    url = "http://" + url;
    this.setDefaultHeaders(parameters, url);
    return this.http.get(url, { headers: this.headers }).toPromise();
};
private setDefaultHeaders(data: any,  url: string): void {
    this.headers = new Headers();
    this.headers.append("Content-Type", "application/json");
    this.headers.append("Authorization", "Basic " + data);
    this.headers.append("Access-Control-Allow-Origin", url);
}
}

Rabbit服務從您通過以下命令啟用的6個默認插件開始

rabbitmq-plugins啟用rabbitmq_management

至於url和參數,函數中接收到的url是localhost:15672 / api / overview,參數是guest:guest

您可以在此代碼中看到,當請求包含Origin頭時, 返回CORS頭( match_origin函數)。

使用Angular創建的請求必須包含一個Origin頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM