簡體   English   中英

Angular HttpPost方法返回為405方法,不允許

[英]Angular HttpPost method returns as 405 method not allowed

Angular HttpPost方法返回不允許的405方法。

服務電話:

private fileUploadUrl = 'file-tranfer/uploadFile';

formHtppOptions(params): any {
    const httpOptions = {
      headers: {'Content-Type': 'application/json', 'Application-Token': this.getToken()},
      params: params,
             };
    return httpOptions;
  }

getBaseUrl(): string {
     return this.sharedSessionService.sharingData.config.uiService.url;
  }

  getToken(): string {
    return this.sharedSessionService.sharingData.config.uiService.token;
  }

  postFileTransferUpload(formData):  Observable<object> {
    const baseUrl = this.getBaseUrl();
    return this.http.post<Object>(baseUrl + this.fileUploadUrl, formData, this.formHtppOptions({}));
  }

控制器:

uploadFile() {
  const formData = new FormData();
  formData.set('file', this.fileToUpload);
   formData.set('company', this.selectedCompany);
  formData.set('fileId', this.selectedFileType);

   this.iportalUploadService.postFileTransferUpload(formData)
  .subscribe(data => {
    debugger;
  });
}

錯誤: 上載控制台錯誤

當數據是new FormData()時,代碼錯誤地設置了Content-Type: 'application/json

您根本不需要Content-Type

formHtppOptions(params): any {
    const httpOptions = {
      headers: { ̶'̶C̶o̶n̶t̶e̶n̶t̶-̶T̶y̶p̶e̶'̶:̶ ̶'̶a̶p̶p̶l̶i̶c̶a̶t̶i̶o̶n̶/̶j̶s̶o̶n̶'̶,̶
                 'Application-Token': this.getToken()
      },
      params: params,
    };
    return httpOptions;
}

當以FormData對象作為數據調用XHR.send方法時 ,它會自動將內容類型設置為"multipart/form-data"並附加適當的零件邊界。

看起來,您要發送發布請求的服務器(您站點的服務器)已配置為阻止發布請求。 請配置您的服務器以允許發布請求。 我猜它的后端問題

請遵循以下文檔

http://www.checkupdown.com/status/E405.html

如@georgeawg所述,您無需在此處分配content-type,因為它的不必要是因為這里的數據是FormData()。 所以您要做的就是刪除這部分

'內容類型':'應用程序/ json'

從標題開始。 還要確保您在標頭中包括Access-Control-Allow-Methods:POST(僅當上述解決方案無法正常工作時),因為在您的POST請求可能會在瀏覽器端被阻止的情況下,這種情況可能會發生。允許。

希望現在一切正常!

暫無
暫無

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

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