在$ http post请求标头或正文中插入自定义变量

时间:2015-12-14 15:56:11

标签: javascript c# angularjs http post

在我的项目中,我已经有了使用$ http.post插入所需对象的AngularJS服务,如下所示:

function insertObject(object, callback) {
        $http.post(apiUrl, object).success(function (data) {

“object”在相应的AngularJS控制器中设置并发送到我的服务,如:

objectServices.insertObject(object, function (data) {

据此,“对象”通过$ http post request body发送。我需要的是在$ http请求中发送一个额外的变量。实际上,这个变量应该是控制器工作的URL(路由)。 我无法更改此对象结构(将新属性附加到其中,这将保存URL信息等),因为$http.post(apiUrl, object)匹配相应的后端API Controller方法,该方法将此对象精确地作为参数(此对象是实体)。 我试过这样的事情:

声明将保存网址信息的变量:

var url = window.location;

并将其附加到$ http.post标题,如:

$http.defaults.headers.common["currentUrl"]= url;  

其中“currentUrl”应该是键,url是值。

还尝试了类似的事情:

$http.post(apiUrl, object, headers: { 'currentUrl': url })

在后端,在相应的API控制器内部HttpResponseMessage方法尝试从请求标头中提取它:

Request.Headers.Single(x => x.Key == "currentUrl").ToString();

但它不起作用。请问,有人可以解释如何在http post请求中发送自定义数据并告诉我我的尝试有什么问题吗?

编辑:后端的Request.Header内容为:

Content of Request.Header on backend side is:

1 个答案:

答案 0 :(得分:0)

附加变量时:
$http.defaults.headers.post.currentUrl = url;

拨打电话时,你错过了大括号:
    $http.post(apiUrl, object, {headers: { 'currentUrl': url }})