我是Angle 8的新手,我正尝试发布带有json数据的文件以提供服务。由于如果请求标头中有可用的内容类型标头,我的服务将不接受多部分表单数据请求。我尝试删除标头,但令我惊讶的是,我在请求标头中看到内容类型标头和值。
我的代码
addProd(formData: FormData): Observable<any> {
let headers = new HttpHeaders();
headers = headers.delete("content-type");
//delete headers['content-type'];
//headers.set('content-type',undefined);
const req = new HttpRequest('POST', apiUrl + "product", formData,{
headers:headers
});
return this.http.request(req).pipe(
tap(_ => this.log("added product")),
catchError(this.handleError("add product"))
);}
我的表单数据
const formData: FormData = new FormData();
formData.append('file', this.fileData, this.fileData.name);
formData.append('product', JSON.stringify(productData));
来自mozilla浏览器的请求标头
我尝试将值设置为undefined
,但是在控制台values are undefined
中却出现异常。
任何人都可以帮助我如何在请求中没有内容类型标头的情况下发布数据。
答案 0 :(得分:1)
您可以尝试在拦截器中删除所需的标头(如果可能的话-有些标头是无法删除的)。
cross <- merge(data[sex=="M",], data[sex=="F",], by=NULL)
df <- data.frame(var1=cross$var1.x/cross$var1.y, var2=cross$var2.x/cross$var2.y)
df
var1 var2
1 0.3333333 0.7500000
2 0.6666667 0.8750000
3 0.2500000 0.6666667
4 0.5000000 0.7777778
5 0.2000000 0.6000000
6 0.4000000 0.7000000
接口的服务HttpInterceptor
@Injectable()
export class RemoveHeaderInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler) {
// Get the headers without content-type
const {'content-type', others } = req.headers;
// As the request is immutable, clone the original
// with the new headers
const newReq = req.clone({
headers: others
});
// dispatch the new request with the new headers
// without content-type
return next.handle(newReq);
}
}
)上为服务提供特殊令牌(HTTP_INTERCEPTORS
):AppModule