JSON POST работает только 1 раз


#1

Пытаюсь произвести регистрацию на сервере с помощью запроса POST JSON.

Получилось сделать подобное только 1 раз, а теперь выдает ошибку 401

Мой код:

func regestration(){

let parameters =
    ["username":textFieldUsername.text!,
     "password":textFieldPassword.text!,
]

guard let url = URL(string: "http://test/rest/user/login") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accepts")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
request.httpBody = httpBody

let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
    if let response = response {
        print(response)
    }
    
    if let data = data {
        do {
            let json = try JSONSerialization.jsonObject(with: data, options: [])
            print(json)
            
        } catch {
            print(error)
        }
    }
    
    }.resume()


}

<NSHTTPURLResponse: 0x60000003f320> { URL: test.com/rest/user } { Status Code: 401, Headers {
“Cache-Control” = (
“no-cache, must-revalidate”
);
Connection = (
close
);
“Content-Type” = (
“application/json”
);
Date = (
“Wed, 06 Jun 2018 11:08:51 GMT”
);
Expires = (
“Sun, 19 Nov 1978 05:00:00 GMT”
);
Server = (
“Apache/2.2.22 (@RELEASE@)”
);
“Transfer-Encoding” = (
Identity
);
Vary = (
Accept
);
“X-Content-Type-Options” = (
nosniff
);
“X-Powered-By” = (
“PHP/5.6.19”
);
} }
(
“CSRF validation failed”
)


#2

Прежде всего Вам нужно посмотреть Список ошибок HTTP


#3

Прочитал об этой ошибке, но я все равно не понимаю чем она вызвана.


#4

401 Unauthorized error
Плюс вам в json ответе конкретно пишется причина данной ошибки “CSRF validation failed”.
Если будет не понятно, объясню подробнее позже.


#5

Проблема заключалась в том, что нужно было сделать LogOut.


#6

была похожая проблема - backend сказал,что сохраняются куки(cookies). перед post запросом делаю их очистку
let cstorage = HTTPCookieStorage.shared
if let cookies = cstorage.cookies(for: fullUrl){
for cookie in cookies {
cstorage.deleteCookie(cookie)
}
}


#7

Большое спасибо, попробую)