I would subclass dojo.store.JsonRest as you can see in this jsFiddle .
a. Subclass dojo.store.JsonRest :
var MyJsonRest = declare(JsonRest, { get: function(id, options) { return this.inherited( arguments, [id, lang.mixin(this.defaultGetHeaders, options)] ); } });
So, you override the get method that calls the superclass' get , but the second options argument (i.e. the headers) will now also contain the properties from this.defaultGetHeaders .
B. Define defaultGetHeaders in the constructor:
var myJsonRest = MyJsonRest({ target: "/echo/json/", defaultGetHeaders: { userId: "xyz", requestedBy: "abc", requestedFrom: "123" } });
C. By calling the myJsonRest.get() method, you can also overwrite the default headers:
myJsonRest.get("someId", { requestedFrom: "321"}).then(function(result) { console.log(result); });
E. Check the request headers:

source share