Here is the error case: <https://codepen.io/Gerhut/pen/OErpQm?editors=0012>

Browsers will set Content-Type header automatically from `Blob#type` or `File#type` (if exists) when sending a Blob/File through xhr, which is overwritten by `axios.defaults.headers.post`.

Shall we provide a specific behavior about this case, either remove the `Content-Type` and let it be set by the browser (like FormData) or set it as `Blob#type` or `File#type` manually to increase compatibility? (Although I don't know if there is any browser don't set `Blob#type` or `File#type` in xhr.)

lib/adapters/xhr.js
'use strict';
var utils = require('./../utils');
var settle = require('./../core/settle');
var cookies = require('./../helpers/cookies');
var buildURL = require('./../helpers/buildURL');
var buildFullPath = require('../core/buildFullPath');
var parseHeaders = require('./../helpers/parseHeaders');
var isURLSameOrigin = require('./../helpers/isURLSameOrigin');
var createError = require('../core/createError');
module.exports = function xhrAdapter(config) {
  return new Promise(function dispatchXhrRequest(resolve, reject) {
    var requestData = config.data;
    var requestHeaders = config.headers;
    if (utils.isFormData(requestData)) {
      delete requestHeaders['Content-Type']; 
    }
    var request = new XMLHttpRequest();
    
    if (config.auth) {
      var username = config.auth.username || '';
      var password = unescape(encodeURIComponent(config.auth.password)) || '';
      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
    }
    var fullPath = buildFullPath(config.baseURL, config.url);
    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
    
    request.timeout = config.timeout;
    
    request.onreadystatechange = function handleLoad() {
      if (!request || request.readyState !== 4) {