簡體   English   中英

405(不允許使用方法):angular4

[英]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核心,則可以按照此處的說明進行操作:

https://docs.microsoft.com/zh-cn/aspnet/core/security/cors

暫無
暫無

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

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