8

Nous avons un problème avec le téléchargement de fichiers à partir du serveur en arrière-plan. Le champ "Autorisation" de l'en-tête HTTP est perdu lors de la redirection de la requête vers un autre serveur.NSURLRequest a perdu l'en-tête HTTP "Autorisation" lors de la redirection de la demande

Nous avons fait quelques expériences et remarqué que d'autres champs (même mais avec le symbole de soulignement à la fin "Autorisation_") fonctionnent parfaitement en redirection. On dirait que ce champ est effacé pour des raisons de sécurité, comme si différents serveurs utilisaient des données d'authentification différentes.

Il est possible d'ajouter « Autorisation » champ manuellement en mode d'avant-plan en utilisant la méthode

URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler: 

. Il y a un problème lorsque nous avons essayé d'utiliser la demande de redirection en mode arrière-plan. Parce que selon la documentation "Tâches en arrière-plan suivent automatiquement les redirections."

Je ne trouve rien à propos de sauter ce champ dans RFC 2616, mais supposons qu'il existe probablement une solution non documentée pour enregistrer le champ "Autorisation" lors de la redirection en mode d'arrière-plan .

Permettez-moi suppose que notre serveur frontal peut fournir un champ spécial en réponse redirect qui dit que le serveur redirigée est digne de confiance et nous pouvons utiliser le champ « autorisation », sans aucune modification.

qui est juste un idée et probablement nous devons l'utiliser d'une autre manière.Pourriez-vous nous diriger s'il vous plaît?

Répondre

3

L'en-tête «Authorization» est l'un des en-têtes «spéciaux» qu'il est conseillé de ne pas modifier. Ceci est de la documentation d'Apple (LINK):

Les classes classe NSURLConnection et NSURLSession sont conçus pour gérer divers aspects> du protocole HTTP pour vous. Par conséquent, vous ne devez pas modifier les en-têtes suivants:

  • Autorisation
  • Connexion
  • hôte
  • WWW-Authenticate
+0

Merci, Rafał. J'ai eu une conversation avec l'ingénieur d'Apple sur WWDC Lab à propos de cette question et il a convenu qu'il pourrait être une bonne solution d'utiliser un champ personnalisé comme "Authorization_" (avec des traits de soulignement). On dirait un hack, mais cela fonctionne en arrière-plan comme prévu – gN0Me

Questions connexes