Angular2 Firebase:预检响应具有无效的 HTTP 状态代码 405
Angular2 Firebase : Response for preflight has invalid HTTP status code 405
我是 Angular2 的新手。在尝试从 Firebase API 获取值时,出现以下错误:
OPTIONS https://udemy-ng-http.firebaseio.com/data 405 (Method Not Allowed)
Failed to load https://udemy-ng-http.firebaseio.com/data: Response for preflight has
invalid HTTP status code 405
但我能够post将数据发送到 Firebase API 端点。
我也尝试了这个社区提供的其他解决方案,但没有帮助。下面是我的代码。
代码:
getServer(){
let headers = new Headers();
headers.append('Access-Control-Allow-Headers', 'Content-Type');
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Content-Type', 'application/json') ;
headers.append('charset','UTF-8');
headers.append('Accept','application/json');
let options = new RequestOptions({ headers: headers });
return this.http.get('https://udemy-ng-http.firebaseio.com/data',options)
.map(
(response: Response) => {
const data = response.json();
for (const server of data) {
server.name = 'FETCHED_' + server.name;
}
return data;
}
)
.catch(
(error: Response) => {
return Observable.throw('Something went wrong');
}
);
}
您需要将 .json 添加到您的端点。尝试点击 https://udemy-ng-http.firebaseio.com/data.json。它给出了 404。您可以尝试点击您创建的那个。请看看我创建的plunk。
https://plnkr.co/edit/ZTZ9QXsDWRlvboPh2OEu?p=preview
let _url = 'https://irelief-3ff8d.firebaseio.com/bookings.json';
//https://udemy-ng-http.firebaseio.com/data
this.http.get(_url, { headers: headers }).subscribe((response)=>{
alert('response >> '+JSON.stringify(response));
this.responseData = response;
},err => alert('status : '+err.status)));
您需要将 url 替换为您自己的应用。希望这可以帮助。
P.S。我在这个例子中使用 angular 版本 4.4.6。
尝试删除 headers.append('Access-Control-Allow-Origin', '*');
Firebase 团队提供了两个 sample functions 来演示 CORS 的使用:
第二个示例使用与您当前使用的不同的方式处理 cors。
此外,考虑像这样导入,如示例所示:
const cors = require('cors')({origin: true});
我是 Angular2 的新手。在尝试从 Firebase API 获取值时,出现以下错误:
OPTIONS https://udemy-ng-http.firebaseio.com/data 405 (Method Not Allowed)
Failed to load https://udemy-ng-http.firebaseio.com/data: Response for preflight has
invalid HTTP status code 405
但我能够post将数据发送到 Firebase API 端点。
我也尝试了这个社区提供的其他解决方案,但没有帮助。下面是我的代码。
代码:
getServer(){
let headers = new Headers();
headers.append('Access-Control-Allow-Headers', 'Content-Type');
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Content-Type', 'application/json') ;
headers.append('charset','UTF-8');
headers.append('Accept','application/json');
let options = new RequestOptions({ headers: headers });
return this.http.get('https://udemy-ng-http.firebaseio.com/data',options)
.map(
(response: Response) => {
const data = response.json();
for (const server of data) {
server.name = 'FETCHED_' + server.name;
}
return data;
}
)
.catch(
(error: Response) => {
return Observable.throw('Something went wrong');
}
);
}
您需要将 .json 添加到您的端点。尝试点击 https://udemy-ng-http.firebaseio.com/data.json。它给出了 404。您可以尝试点击您创建的那个。请看看我创建的plunk。
https://plnkr.co/edit/ZTZ9QXsDWRlvboPh2OEu?p=preview
let _url = 'https://irelief-3ff8d.firebaseio.com/bookings.json';
//https://udemy-ng-http.firebaseio.com/data
this.http.get(_url, { headers: headers }).subscribe((response)=>{
alert('response >> '+JSON.stringify(response));
this.responseData = response;
},err => alert('status : '+err.status)));
您需要将 url 替换为您自己的应用。希望这可以帮助。
P.S。我在这个例子中使用 angular 版本 4.4.6。
尝试删除 headers.append('Access-Control-Allow-Origin', '*');
Firebase 团队提供了两个 sample functions 来演示 CORS 的使用:
第二个示例使用与您当前使用的不同的方式处理 cors。
此外,考虑像这样导入,如示例所示:
const cors = require('cors')({origin: true});