REST API cross origin request
Posted: 22 Jun 2017, 18:22
Note: I posted an English version of this problem on stackoverflow, too: https://stackoverflow.com/questions/447 ... gular-http
Hallo,
ich arbeite derzeit an einer Webapplikation, welche die REST API von mantisBT nutzen soll. Auch wenn diese noch experimentell ist, habe ich gehofft, dass diese für meine Zwecke funktioniert.
Folgendes Szenario: Die Webapplikation läuft auf einer anderen Domain als meine mantisBT Installation. Ich habe bereits folgendes konfiguiert:
1. config_inc.php
2. /api/rest/index.php
(ansonsten übernimmt er die Header aus der config_inc.php nicht
3. API Token generiert
Nun erstelle ich in meiner Webapplikation eine HTTP Anfrage wie folgt (Angular 2 + Typescript):
Das funktioniert leider nur, wenn die Webapplikation sich auf derselben Domain befindet wie mantisBT. Für meinen Zweck muss das aber von verschiedenen Domains aus funktionieren.
Ich bekomme folgende Fehlermeldung:
Ich habe schon im Internet gesucht und herausgefunden, dass es ein serverseitiges Problem sein muss. Nach sehr vielen Stunden der Suche, wende ich mich hoffnungsvoll an euch. Kann mir bitte jemand helfen?
Viele Grüße
Julian
Hallo,
ich arbeite derzeit an einer Webapplikation, welche die REST API von mantisBT nutzen soll. Auch wenn diese noch experimentell ist, habe ich gehofft, dass diese für meine Zwecke funktioniert.
Folgendes Szenario: Die Webapplikation läuft auf einer anderen Domain als meine mantisBT Installation. Ich habe bereits folgendes konfiguiert:
1. config_inc.php
Code: Select all
$g_webservice_rest_enabled = ON;
$t_protocol = 'https';
$g_custom_headers = array(
'Access-Control-Allow-Origin: *',
'Access-Control-Allow-Headers: authorization,content-type',
'Access-Control-Allow-Methods: POST,GET,OPTIONS'
);Code: Select all
# Bypass default Mantis headers
$g_bypass_headers = false;3. API Token generiert
Nun erstelle ich in meiner Webapplikation eine HTTP Anfrage wie folgt (Angular 2 + Typescript):
Code: Select all
sendReport(): Observable<Response> {
const api_token = 'XXXXXXX';
const url = 'https://XXXXXXX/mantisbt/api/rest/issues';
const headers = new Headers();
headers.append('content-type', 'application/json');
headers.append('authorization', api_token);
const params = new URLSearchParams();
params.set('id', '1');
const options = new RequestOptions({ headers: headers, search: params });
return this.http.get(url, options);
}Ich bekomme folgende Fehlermeldung:
Code: Select all
XMLHttpRequest cannot load https://poemp.net/mantisbt/api/rest/issues?id=1. Response for preflight has invalid HTTP status code 401
Viele Grüße
Julian