Angular HttpPost 方法 returns 不允许使用 405 方法
Angular HttpPost method returns as 405 method not allowed
Angular HttpPost 方法 returns 不允许使用 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
看起来,您向其发送 Post 请求的服务器(您站点的服务器)已配置为阻止 Post 请求。
请配置您的服务器以允许 Post 请求。我猜它的后端问题
请遵循以下文档
当数据为 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;
}
当 XHR.send method is invoked with a FormData object 作为数据时,它会自动将内容类型设置为 "multipart/form-data"
并附加适当的部分边界。
正如@georgeawg 提到的,您不需要在这里分配 content-type,因为它是不必要的,因为这里的数据是 FormData()。所以你需要做的就是删除这部分
'Content-Type': 'application/json'
来自 headers。还要确保在你的 headers 中包含 Access-Control-Allow-Methods: POST 如果可能(仅当上述解决方案无法正常工作时),因为你的 POST 可能是这种情况请求在浏览器端被阻止,因为它是不允许的。
希望现在一切正常!
Angular HttpPost 方法 returns 不允许使用 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
看起来,您向其发送 Post 请求的服务器(您站点的服务器)已配置为阻止 Post 请求。 请配置您的服务器以允许 Post 请求。我猜它的后端问题
请遵循以下文档
当数据为 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;
}
当 XHR.send method is invoked with a FormData object 作为数据时,它会自动将内容类型设置为 "multipart/form-data"
并附加适当的部分边界。
正如@georgeawg 提到的,您不需要在这里分配 content-type,因为它是不必要的,因为这里的数据是 FormData()。所以你需要做的就是删除这部分
'Content-Type': 'application/json'
来自 headers。还要确保在你的 headers 中包含 Access-Control-Allow-Methods: POST 如果可能(仅当上述解决方案无法正常工作时),因为你的 POST 可能是这种情况请求在浏览器端被阻止,因为它是不允许的。
希望现在一切正常!