8

Abbiamo un problema con il download di file dal server in modalità background. Il campo "Autorizzazione" dell'intestazione HTTP viene perso durante il reindirizzamento della richiesta a un altro server.NSURLRequest ha perso l'intestazione HTTP "Autorizzazione" durante il reindirizzamento della richiesta

Abbiamo fatto alcuni esperimenti e notato che altri campi (anche gli stessi ma con il simbolo di sottolineatura alla fine "Autorizzazione_") funzionano perfettamente in reindirizzamento. Sembra che questo campo venga cancellato in base ad alcuni motivi di sicurezza, ad esempio se server diversi utilizzano dati di autenticazione diversi.

È possibile aggiungere “Autorizzazione” campo manualmente in modalità primo piano con

metodo
URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler: 

. C'è un problema quando abbiamo provato a utilizzare la richiesta di reindirizzamento in modalità background. Perché in base alla documentazione "Attività nelle sessioni in background seguono automaticamente i reindirizzamenti."

Non riesco a trovare nulla su saltare questo campo in RFC 2616, ma supponiamo che probabilmente ci sia una soluzione non documentata per salvare il campo "Autorizzazione" durante il reindirizzamento in modalità background .

Let me per scontato che il nostro server front-end può fornire qualche campo particolare nella risposta di reindirizzamento che direbbero che server di reindirizzamento è attendibile e possiamo usare campo “Autorizzazione” senza alcuna modifica.

Questo è solo un idea e probabilmente dovremo usarla in qualche modo. Potresti indirizzarci per favore?

risposta

3

L'intestazione 'Autorizzazione' è una delle intestazioni 'speciali' che è consigliabile non modificare. Questo è dalla documentazione di Apple (LINK):

La classe NSURLConnection e le classi NSURLSession sono progettati per gestire i vari aspetti> del protocollo HTTP per voi. Di conseguenza, non si deve modificare le seguenti intestazioni:

  • Autorizzazione
  • Connection
  • Host
  • WWW-Authenticate
+0

Grazie, Rafał. Ho avuto una conversazione con l'ingegnere Apple su WWDC Lab su questa domanda e ha convenuto che potrebbe essere una buona soluzione utilizzare alcuni campi personalizzati come "Authorization_" (con underscore). Sembra un trucco, ma funziona in background come previsto – gN0Me