简体   繁体   中英

Insert custom variable in $http post request header or body

In my project, I already have AngularJS service that inserts desired object using $http.post as follows:

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

"object" is set in corresponding AngularJS controller and sent to my service like:

objectServices.insertObject(object, function (data) {

According to this, "object" is sent through $http post request body. What I need, is to send one additional variable inside this $http request. Actually, this variable should be URL (route), with which the controller works. I can't change this object structure (to attach new property to it, which would hold URL info etc.) because $http.post(apiUrl, object) matches corresponding backend API Controller method that takes exactly this object as parameter (this object is entity). I tried something like this:

Declare variable that will hold URL info:

var url = window.location;

And attach it to $http.post header like:

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

where "currentUrl" is supposed to be key and url is value.

Also tried something like:

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

and on backend side, inside corresponding API Controller HttpResponseMessage method tried to extract it from request header as:

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

but it didn't work. Please, can someone explain how to send custom data inside http post request and tell me what wrong is with my try?

EDIT: Content of Request.Header on backend side is:

后端的Request.Header的内容是:

While attaching the variable:
$http.defaults.headers.post.currentUrl = url;

When making the call, you missed the braces:
$http.post(apiUrl, object, {headers: { 'currentUrl': url }})

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM