Angular HttpPost方法返回为405方法,不允许

时间:2018-07-16 15:52:40

标签: angular http angular5 angular2-services

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;
  });
}

错误:console error on upload

3 个答案:

答案 0 :(得分:2)

当数据为Content-Type: 'application/json时,代码错误地设置了new FormData()

您根本不需要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;
}

XHR.send method作为数据调用FormData object时,它会自动将内容类型设置为"multipart/form-data"并附加适当的零件边界。

答案 1 :(得分:0)

看起来,您要发送发布请求的服务器(您站点的服务器)已配置为阻止发布请求。 请配置您的服务器以允许发布请求。我猜它的后端问题

请遵循以下文档

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

答案 2 :(得分:0)

正如@georgeawg所述,您无需在此分配内容类型,因为它的不必要是因为这里的数据是FormData()。因此,您要做的就是删除此部分

  

“内容类型”:“ application / json”

从标题开始。还要确保您在标头中包括Access-Control-Allow-Methods:POST(仅当上述解决方案无法正常工作时),因为在您的POST请求可能会在浏览器端被阻止的情况下,这种情况可能会发生。允许的。

希望现在一切正常!