2017-07-14 26 views
0

私は現在、特定のRabbitmqに接続されているすべてのキューにアクセスする必要があるプロジェクトを開発中です。これを行うために、私はrabbitmqのRESTfulサービスを使ってこの情報を取得しようとしていました。私はPOSTmanを使って、localhostにリクエストを送るようないくつかの例をしようとしました:15672/api/guest:usernameとpasswordとしての接続。私は角に、次のエラーメッセージを私のプロジェクトを使用して同じ要求を送信しようとしたときただし、出演:RabbitMQ RESTfulサービスとAngular2の併用

zone.js:2177 XMLHttpRequest cannot load localhost:15672/api/overview. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

私は、このエラーに関するいくつかの研究をしたと私は見つけることができるすべてのソリューションは、私は私のブラウザを可能にしなければならないことが示唆されましたこのソリューションでは、プロジェクトを実行するすべてのブラウザを変更する必要がありましたが、これは効果的ではありません。 Angular 2アプリケーションを使用してRabbitmqの情報を入手できる別の方法を知っている人は誰ですか?

ありがとうございます!

編集:私は "のhttp://" を追加した場合

また、リクエストの開始時に、エラーメッセージがに変更されます。ここでは

XMLHttpRequest cannot load http://localhost:15672/api/overview . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:4200 ' is therefore not allowed access. The response had HTTP status code 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); 
} 
} 

ウサギのサービスを使用すると、コマンド

で有効その6つのデフォルトのプラグインを起動しますURLやパラメータ、関数内で受信したURLについては

はlocalhost:15672/API /概要およびパラメータがゲストです:ゲスト

答えて

0

あなたはthis codeで見ることができるのヘッダーはときに返さあるCORS要求にOriginヘッダー(match_origin関数)が含まれています。

Angularで作成するリクエストには、Originヘッダーが含まれている必要があります。

+0

私のアプリケーションのヘッダーは次のように定義されています。 this.headers = new Headers(); this.headers.append( "Access-Control-Allow-Origin"、url); this.headers.append( "Content-Type"、 "application/json"); this.headers.append( "Authorization"、 "Basic" + data); –

+0

ヘッダーの名前は "Origin"とする必要があります - https://github.com/rabbitmq/rabbitmq-management/blob/master/src/rabbit_mgmt_cors.erl#L72-L93 この問題を再現するコードを提供できる場合は、はるかに速く進むでしょう。あなたが間違ってやっていることだけを推測することができます。 –

+0

ありがとう=)、私は現在使用しているコードで私のオリジナルのポストを編集しました。 –