2017-09-24 3 views
1

Mon application crée une requête POST avec en-tête d'autorisation - il ressemble à:autorisation tête à Swift POST

let accessToken = "veryCoolToken" 
var request = URLRequest(url: myURL) 
request.httpMethod = "POST" 
request.addValue("application/json", forHTTPHeaderField: "content-type") 
request.addValue("application/json", forHTTPHeaderField: "Accept") 
request.setValue("token=\"\(accessToken)\"", forHTTPHeaderField: "Authorization") 

J'ai déjà vérifié cette demande avec l'application Postman - il était très bien. Mais pour une raison quelconque, j'ai reçu le résultat nécessaire uniquement de Postman et non de mon application.

Donc, après avoir pris part la demande sur mon serveur - je trouve que lorsque mon application envoyer une requête POST - il n'est pas « A UTORISATION » mais « un UTORISATION ».

Pourquoi cela se produit-il? Quoi d'autre devrais-je prendre en considération lorsque l'application envoie une requête POST avec les en-têtes?

+0

Vous devriez changer votre back-end pour accepter les en-têtes cas insensibles. Les en-têtes HTTP dans iOS ne sont pas sensibles à la casse pour se conformer à [HTTP RFC] (https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html). –

+0

Alors quand j'écris "Autorisation" - appareil iOS envoie "autorisation" et ça va? – moonvader

+0

Oui, c'est correct. –

Répondre

1

Pour les requêtes POST à ​​Swift, généralement, vous devez définir les éléments suivants:

request.setValue("Basic " + accessToken, forHTTPHeaderField: "Authorization") 
+0

Etes-vous sûr que c'est la raison de mon problème? – moonvader

+0

Toutes les requêtes POST pour l'authentification de base ont des en-têtes d'autorisation dans ce format dans swift. Vous pouvez essayer de remplacer la ligne 'token = ...' par ceci pour le tester. –

+0

Je n'ai pas de problème avec la valeur de l'en-tête Authorization. J'ai un problème avec "Authorization" envoyé en minuscules – moonvader