Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
belltown
Roku Guru

ifHttpAgent.GetCookies() returns bad cookies

I've noticed that ifHttpAgent.GetCookies() does not parse cookies correctly from the http header. (Tested using fw 5.5b410).

Here's code to reproduce the problem:


sub main ()
port = CreateObject ("roMessagePort")
ut = CreateObject ("roUrlTransfer")
ut.SetPort (port)
ut.SetCertificatesFile ("common:/certs/ca-bundle.crt")
ut.InitClientCertificates ()
ut.EnableCookies ()
ut.SetUrl ("https://accounts.google.com/ServiceLogin")
if ut.AsyncGetToString ()
while true
msg = Wait (0, port)
if type (msg) = "roUrlEvent"
if msg.GetInt () = 1
status = msg.GetResponseCode ()
print "Status: "; status; ". FailureReason: "; msg.GetFailureReason ()
responseHeaderList = msg.GetResponseHeadersArray ()
print "------Response Headers------"
for each responseHeader in responseHeaderList
for each item in responseHeader
print item; ": "; responseHeader [item]
end for
end for
cookieList = ut.GetCookies ("", "/")
print "------Cookies------"
for each cookie in cookieList
print cookie
end for
endif
exit while
endif
end while
endif
end sub


And here's the output:


------ Running ------
Status: 200. FailureReason: OK
------Response Headers------
Alternate-Protocol: 443:quic
Cache-control: no-cache, no-store
Content-Type: text/html; charset=UTF-8
Date: Sun, 24 Aug 2014 00:52:05 GMT
Expires: Mon, 01-Jan-1990 00:00:00 GMT
Pragma: no-cache
Server: GSE
Set-Cookie: GAPS=1:FdELrUtrjmtG3u18KBWlGwhJn3oPpA:1H3Bc1g1JlWbbcqs;Path=/;Expires=Tue, 23-Aug-2016 00:52:05 GMT;Secure;HttpOnly;Priority=HIGH
Set-Cookie: GALX=wJb5Xzs7808;Path=/;Secure
Strict-Transport-Security: max-age=10893354; includeSubDomains
Transfer-Encoding: chunked
X-Auto-Login: realm=com.google&args=continue%3Dhttps%253A%252F%252Faccounts.google.com%252FManageAccount
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
------Cookies------
Value: wJb5Xzs7808
Version: 0
Name: GALX
Path: /
Domain: accounts.google.com

Value: HIGH
Version: 0
Name: HttpOnly;Priority
Path: /
Domain: accounts.google.com

Value: 1:FdELrUtrjmtG3u18KBWlGwhJn3oPpA:1H3Bc1g1JlWbbcqs
Version: 0
Name: GAPS
Path: /
Domain: accounts.google.com
Expires: <Component: roDateTime>


It seems that if a cookie has attributes beyond just name, value, Path, Expires, and Secure, then the remaining attributes (up to the next "=" character) are taken to be the name of another cookie, and the characters after the "=" taken to be its value. So GetCookies() returns some items in its array that do not correspond to actual cookies.

Is this a bug or am I doing something wrong here?
0 Kudos