above answer is correct, but getFeatureInfoUrl function creates only the WFS request of crs EPSG:4326.
uses this modified function, because this way WFS request is created based on used crs, regardless of whether it is 4326 or 3857:
getFeatureInfoUrl: function (latlng) {
// Construct a GetFeatureInfo request URL given a point
var point = this._map.latLngToContainerPoint(latlng, this._map.getZoom()),
size = this._map.getSize(),
// this crs is used to show layer added to map
crs = this.options.crs || this._map.options.crs,
// these are the SouthWest and NorthEast points
// projected from LatLng into used crs
sw = crs.project(this._map.getBounds().getSouthWest()),
ne = crs.project(this._map.getBounds().getNorthEast()),
params = {
request: 'GetFeatureInfo',
service: 'WMS',
// this is the code of used crs
srs: crs.code,
styles: this.wmsParams.styles,
transparent: this.wmsParams.transparent,
version: this.wmsParams.version,
format: this.wmsParams.format,
// these are bbox defined by SouthWest and NorthEast coords
bbox: sw.x + ',' + sw.y + ',' + ne.x + ',' + ne.y,
height: size.y,
width: size.x,
layers: this.wmsParams.layers,
query_layers: this.wmsParams.layers,
info_format: 'text/html'
};
params[params.version === '1.3.0' ? 'i' : 'x'] = point.x;
params[params.version === '1.3.0' ? 'j' : 'y'] = point.y;
return this._url + L.Util.getParamString(params, this._url, true);
}