iOS:如何为NSHTTPCookie设置httponly标志

har*_*man 1 cookies objective-c nshttpcookie ios

我正在使用以下代码构造NSHTTPCookie,但是没有用于设置Cookie的httpOnly标志的选项

[cookieProperties setObject:@"name" forKey:NSHTTPCookieName];
[cookieProperties setObject:@"value" forKey:NSHTTPCookieValue];
[cookieProperties setObject:[NSNumber numberWithBool: NO] forKey:NSHTTPCookieDiscard];
[cookieProperties setObject:[dictionary objectForKey:@"isSecure"] forKey:NSHTTPCookieSecure];


[cookieProperties setObject:@"abc.xyz.com" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"abc.xyz.com" forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
Run Code Online (Sandbox Code Playgroud)

小智 5

有一个未记录的cookie属性密钥(通过@mikewest找到):

// NSHTTPCookie的未记录属性。
NSString * const kNSHTTPCookieHttpOnly = @“ HttpOnly”;

我在Swift中进行了尝试,它的代码完成了预期的工作。

import Foundation

extension HTTPCookiePropertyKey {
    static let httpOnly = HTTPCookiePropertyKey("HttpOnly")
}

let cookie = HTTPCookie(properties: [
  .domain: "example.org",
  .path: "/",
  .name: "Cookie Example",
  .value: "Om nom nom",

  .version: 1, // RFC2965 for HttpOnly cookies
  .httpOnly: true
])!

print(cookie.isHTTPOnly) // true
Run Code Online (Sandbox Code Playgroud)