[英]405 (Method Not Allowed): angular4
我嘗試將數據發布到帶有angular 4的后端(我嘗試使用angular4應用身份驗證),但是出現此錯誤:
我使用擴展名google chrome來解決錯誤cro,但也使用了錯誤代碼服務:
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import { Data } from '../Data';
import { HttpHeaders, HttpClient } from '@angular/common/http';
import { RequestOptions, Headers } from '@angular/http';
import {Router} from '@angular/router';
@Injectable()
export class DataServiceService {
constructor(private http:HttpClient,public router:Router) { }
Login(data)
{
let headers: any = new HttpHeaders();
headers.append('Content-Type', 'application/json');
return this.http.post('link api',JSON.stringify(data),{responseType: 'text'})
.subscribe(res => console.log(res),err => {console.log(err); if (err.status === 401 || err.status === 403) {
this.router.navigateByUrl(`/login`);
}});
}
public getToken(): string {
return localStorage.getItem('token');
}
public isAuthenticated(): boolean {
let token = this.getToken();
if (token === null) return false; else return true;
}
}
代碼部分:
mySubmit({value,valid}:{value:Data,valid:boolean})
{
if (valid === true) { console.log(value);
this.dataService.Login(value);
} else console.log('error');
}
代碼攔截器:
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpErrorResponse } from '@angular/common/http';
import { Injectable, Injector } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { DataServiceService } from './data-service.service';
import {Router} from '@angular/router';
import 'rxjs/add/observable/of';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
//inj:Injector;
constructor(public inj: Injector,public router:Router) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const auth = this.inj.get(DataServiceService);
const authToken = auth.getToken();
const clonedRequest = req.clone({
headers: req.headers.set('Authorization', `Bearer ${authToken}`)
.set('Content-Type', 'application/json')
});
return next.handle(req);
}
}
現在,當發送數據時,我有錯誤405方法不允許,並且在攔截器中,我將application / json添加到Content-Type但也出錯
手動添加這些請求標頭將導致瀏覽器在發送POST請求之前發送OPTION請求。 您需要更改后端服務器配置,以通過啟用CORS來允許OPTIONS請求。
您沒有提到正在使用的后端,但是例如,如果它是.net核心,則可以按照此處的說明進行操作:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.