我正在尝试从需要自定义授权标头的后端端点获取一些数据。只要用户名仅包含英文字符,它就可以正常工作。如果用户名包含任何非英语字符,则服务器将返回401未经授权。
我将标题设置如下:
[urlRequest setValue:@“ HTTPHeaderField:”“授权” @@ MyProject- ApiKeysøren:drt38f0s9a21“];//如果名称是mike而不是søren,则它正常工作。不行。
我尝试在标头值中手动对ø字符unicode代码点(\ U00F8)进行硬编码,但效果不佳。在将该值设置为标题以使其起作用之前,我应该对值做什么?我能够在非英文字母的Android中使用此端点。因此,问题不在服务器端。
注意:在请求失败之前,我立即收到以下日志
CredStore - performQuery - Error copying matching creds. Error=-25300, query={
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = htps;
"r_Attributes" = 1;
sdmn = "django-tastypie";
srvr = "domain.com";
sync = syna;
}
以下是我的要求方式
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://domain/endpoint/?queryParam=3"];
[urlRequest setHTTPMethod:@"GET"];
[urlRequest setValue:[self getHeaderValue] forHTTPHeaderField:@"Authorization"];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
if(httpResponse.statusCode == 200)
{
//comes here with english letters
}
else if(httpResponse.statusCode == 401)
{
//comes here with non english letters
}
}];
[dataTask resume];
更新:我在邮递员上尝试了它,它也无法正常工作。仅适用于英文字母。
不可能。我最终要求服务器端进行更改,希望该标头中的用户名经过base64编码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句