AngularJs DELETE与数据集错误的内容类型标头

use*_*939 13 angularjs angularjs-service

我正在使用有效负载制作$ http DELETE请求,但内容类型错误.我有一个数据对象,但内容类型设置为text/plain而不是application/json.从下面的代码和下面的网络请求中可以看到,实际上有一个带有值的数据对象.有没有解决这个问题?非常感谢!

码:

    $http({  
        method: "DELETE",  
        url: ".../v2/places/" + place.id + "/locations/remove",  
        data: location,  
        headers: { Authorization: "Bearer " + rootServices.getToken() }  
    })  
Run Code Online (Sandbox Code Playgroud)

chrome网络请求摘要:

远程地址:54.83.54.37:443
URL:../ v2/places/53b43e03e4b00cb25bcb16af/locations/remove
请求方法:DELETE
状态代码:500内部服务器错误请求
接受:application/json,text/plain,*/*
Accept-Encoding:gzip, deflate,sdch
Accept-Language:en-US,en; q = 0.8
授权:Bearer .....连接:keep-alive
内容长度:66
内容类型:text/plain; charset = UTF-8
主机:沙箱.... net
原产地:127.0.0.1:9000参考
:127.0.0.1:9000/session
用户代理:Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36
(KHTML,类似Gecko)Chrome/35.0.1916.153 Safari /537.36请求
有效负载:{房间:厨房,设备:冰箱,地板:主
楼层}

luc*_*uma 16

您可以在标题中设置内容类型以及Authorization标头

$http({  
        method: "DELETE",  
        url: ".../v2/places/" + place.id + "/locations/remove",  
        data: location,  
        headers: {'Content-Type': 'application/json', Authorization: "Bearer " + rootServices.getToken() }  
    })  
Run Code Online (Sandbox Code Playgroud)

或者你可以在app app中设置它们:

module.config(function($httpProvider) {
  //$http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
  $httpProvider.defaults.headers.delete = { 'Content-Type' : 'application/json' };
});
Run Code Online (Sandbox Code Playgroud)

文档说明:

设置HTTP标头$ http服务将自动为所有请求添加某些HTTP标头.可以通过访问$ httpProvider.defaults.headers配置对象来完全配置这些​​默认值,该配置对象当前包含此默认配置:

$ httpProvider.defaults.headers.common(所有请求通用的标头):Accept:application/json,text/plain,*/*$ httpProvider.defaults.headers.post :( POST请求的标头默认值)Content-Type :application/json $ httpProvider.defaults.headers.put(PUT请求的标头默认值)Content-Type:application/json要添加或覆盖这些默认值,只需在这些配置对象中添加或删除属性即可.要为POST或PUT以外的HTTP方法添加标头,只需添加一个带有小写HTTP方法名称的新对象作为键,例如`$ httpProvider.defaults.headers.get = {'My-Header':'value'} .

也可以通过$ http.defaults对象以相同的方式在运行时设置默认值.例如:

https://docs.angularjs.org/api/ng/service/$http