O https://www.googleapis.com/upload/drive/v2/files realmente oferece suporte ao CORS?

Atualizar: Este é um bug no Google Drive, o CORS não está habilitado para fazer upload de URIs. A @Nivco me indicou um trabalho com a biblioteca cliente do Google, que usa um iframe e um proxy (não o CORS). Eu estou colocando o código de trabalho (testado) na parte inferior, junto com uma explicação detalhada. Por favor, veja a resposta abaixo para o exemplo.

Inserindo arquivo no Google Drive por meio da API eAutorização do Google Drive usando JavaScript Digamos que os endpoints do upload suportam o CORS, mas não consegui usá-los. Eu posso obter autorização e inserir um arquivo vazio, usandoArquivos: insert, mas não consigo enviar conteúdo para ele - recebo um erro 405 (Método não permitido) quando usohttps://www.googleapis.com/upload/drive/v2/files quando eu uso uma das duas técnicas dadas no exemplo na postagem de estouro de pilha de arquivo de inserção.

É possível que o CORS tenha trabalhado para v1 e não tenha sido ativado para v2?

EDIT: By the way, o erro 405 está na solicitação OPTIONS que o Chrome está fazendo.

Edição: Aqui está o código de uma das minhas tentativas:

Antes de apresentar o código, quero destacar que sou capaz de autenticar e listar arquivos. Eu simplesmente não consigo carregar dados em um arquivo.

var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart');
xhr.setRequestHeader('Authorization', 'Bearer ' + params.access_token);
xhr.setRequestHeader("Content-Type",  'multipart/related; boundary="END_OF_PART"');
xhr.onreadystatechange = function(data) {
  if (xhr.readyState == DONE) {
    document.getElementById("files").innerHTML = "Uploaded file: " + xhr.responseText;
    };
  }
xhr.send([
  mimePart("END_OF_PART", "application/json", json),
  mimePart("END_OF_PART", "text/plain", "a\nb\n"),
  "\r\n--END_OF_PART--\r\n",
].join(''));
function mimePart(boundary, mimeType, content) {
  return [
    "\r\n--", boundary, "\r\n",
    "Content-Type: ", mimeType, "\r\n",
    "Content-Length: ", content.length, "\r\n",
    "\r\n",
    content,
  ].join('');
}

Aqui está o pedido:

Request URL:https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart
Request Method:OPTIONS

Aqui está a resposta:

Status Code:405 Method Not Allowed
cache-control:no-cache, no-store, must-revalidate
content-length:0
content-type:text/html; charset=UTF-8
date:Mon, 23 Jul 2012 22:41:29 GMT
expires:Fri, 01 Jan 1990 00:00:00 GMT
pragma:no-cache
server:HTTP Upload Server Built on Jul 17 2012 16:15:04 (1342566904)
status:405 Method Not Allowed
version:HTTP/1.1

Não há resposta, porque o Chrome recebe um erro 405 para essa solicitação do OPTIONS. Não há POST, porque o Chrome não pode continuar, já que sua solicitação OPTIONS falhou com um 405 e, por isso, ele imprime esse erro no console:

XMLHttpRequest cannot load https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart. Origin https://leisurestorage.appspot.com is not allowed by Access-Control-Allow-Origin.

questionAnswers(3)

yourAnswerToTheQuestion