Вы можете проверить исходный d3 (код ищет function d3_xhr
), или просто возьмите мое слово за это (я просто посмотрел), что нет способа указать заголовки по умолчанию для d3.json()
Однако, ничто не мешает вам создавать и использовать свой собственный метод для этого, например
function myJson(args) {
// call d3's json, passing through any arguments that were
// passed into myJson(), and then set the headers you want
return d3.json.apply(null, arguments)
.header('X-Requested-With', 'XMLHttpRequest');
}
тем самым позволяя делать запросы JSon как этот
myJson('/path', function(json) {...})
Это, конечно, требует, чтобы вы использовать myJson()
вместо d3.json
везде. Однако, если вы уверены, что всегда, всегда, всегда хотите устанавливать эти заголовки по умолчанию всякий раз, когда вы вызываете d3.json
, тогда вы можете пойти и (задохнуть) переписать d3.json
с чем-то вроде обычаев myJson
. Например:
// save the originial implementation of d3.json
var d3Json = d3.json;
// define your own implementation of d3.json, which relies on
// the original implementation
d3.json = function() {
// notice the use of d3Json — NOT d3.json, as shown above
return d3Json.apply(null, arguments)
.header('X-Requested-With', 'XMLHttpRequest');
}
И с тех пор, когда вы звоните d3.json(...)
из любой точки в вашем приложении (и это включает в себя любой код поставщика, который может вызывать d3.json
) он будет запускать пользовательскую функцию, которая, в свою очередь, вызовет оригиналd3.json(...)
и установите заголовки по умолчанию.
Спасибо, было просто интересно, если есть способ, прежде чем я начал просматривать исходный код. Будет выполнять вторую рекомендацию, поскольку некоторые запросы поступают от третьей стороны. Отметьте как ответ через пару дней, если нет других ответов. –