mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 12:04:39 +02:00
Merge
This commit is contained in:
commit
441ef80eda
2 changed files with 51 additions and 1 deletions
|
@ -75,6 +75,7 @@ public final class HttpCookie implements Cloneable {
|
||||||
private String path; // Path=VALUE ... URLs that see the cookie
|
private String path; // Path=VALUE ... URLs that see the cookie
|
||||||
private String portlist; // Port[="portlist"] ... the port cookie may be returned to
|
private String portlist; // Port[="portlist"] ... the port cookie may be returned to
|
||||||
private boolean secure; // Secure ... e.g. use SSL
|
private boolean secure; // Secure ... e.g. use SSL
|
||||||
|
private boolean httpOnly; // HttpOnly ... i.e. not accessible to scripts
|
||||||
private int version = 1; // Version=1 ... RFC 2965 style
|
private int version = 1; // Version=1 ... RFC 2965 style
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -656,6 +657,32 @@ public final class HttpCookie implements Cloneable {
|
||||||
version = v;
|
version = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns {@code true} if this cookie contains the <i>HttpOnly</i>
|
||||||
|
* attribute. This means that the cookie should not be accessible to
|
||||||
|
* scripting engines, like javascript.
|
||||||
|
*
|
||||||
|
* @return {@code true} if this cookie should be considered http only.
|
||||||
|
* @see #setHttpOnly(boolean)
|
||||||
|
*/
|
||||||
|
public boolean isHttpOnly()
|
||||||
|
{
|
||||||
|
return httpOnly;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates whether the cookie should be considered HTTP Only. If set to
|
||||||
|
* {@code true} it means the cookie should not be accessible to scripting
|
||||||
|
* engines like javascript.
|
||||||
|
*
|
||||||
|
* @param httpOnly if {@code true} make the cookie HTTP only, i.e.
|
||||||
|
* only visible as part of an HTTP request.
|
||||||
|
* @see #isHttpOnly()
|
||||||
|
*/
|
||||||
|
public void setHttpOnly(boolean httpOnly)
|
||||||
|
{
|
||||||
|
this.httpOnly = httpOnly;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The utility method to check whether a host name is in a domain
|
* The utility method to check whether a host name is in a domain
|
||||||
|
@ -877,6 +904,7 @@ public final class HttpCookie implements Cloneable {
|
||||||
|| name.equalsIgnoreCase("Port") // rfc2965 only
|
|| name.equalsIgnoreCase("Port") // rfc2965 only
|
||||||
|| name.equalsIgnoreCase("Secure")
|
|| name.equalsIgnoreCase("Secure")
|
||||||
|| name.equalsIgnoreCase("Version")
|
|| name.equalsIgnoreCase("Version")
|
||||||
|
|| name.equalsIgnoreCase("HttpOnly")
|
||||||
|| name.charAt(0) == '$')
|
|| name.charAt(0) == '$')
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -996,6 +1024,11 @@ public final class HttpCookie implements Cloneable {
|
||||||
cookie.setSecure(true);
|
cookie.setSecure(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
assignors.put("httponly", new CookieAttributeAssignor(){
|
||||||
|
public void assign(HttpCookie cookie, String attrName, String attrValue) {
|
||||||
|
cookie.setHttpOnly(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
assignors.put("version", new CookieAttributeAssignor(){
|
assignors.put("version", new CookieAttributeAssignor(){
|
||||||
public void assign(HttpCookie cookie, String attrName, String attrValue) {
|
public void assign(HttpCookie cookie, String attrName, String attrValue) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
* @summary Unit test for java.net.HttpCookie
|
* @summary Unit test for java.net.HttpCookie
|
||||||
* @bug 6244040 6277796 6277801 6277808 6294071
|
* @bug 6244040 6277796 6277801 6277808 6294071 6692802
|
||||||
* @author Edward Wang
|
* @author Edward Wang
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -178,6 +178,19 @@ public class TestHttpCookie {
|
||||||
}
|
}
|
||||||
TestHttpCookie port(String p) { return port(0, p); }
|
TestHttpCookie port(String p) { return port(0, p); }
|
||||||
|
|
||||||
|
// check http only
|
||||||
|
TestHttpCookie httpOnly(int index, boolean b) {
|
||||||
|
HttpCookie cookie = cookies.get(index);
|
||||||
|
if (cookie == null || b != cookie.isHttpOnly()) {
|
||||||
|
raiseError("HttpOnly", String.valueOf(cookie.isHttpOnly()), String.valueOf(b));
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestHttpCookie httpOnly(boolean b) {
|
||||||
|
return httpOnly(0, b);
|
||||||
|
}
|
||||||
|
|
||||||
// check equality
|
// check equality
|
||||||
static void eq(HttpCookie ck1, HttpCookie ck2, boolean same) {
|
static void eq(HttpCookie ck1, HttpCookie ck2, boolean same) {
|
||||||
testCount++;
|
testCount++;
|
||||||
|
@ -362,6 +375,10 @@ public class TestHttpCookie {
|
||||||
} catch (IllegalArgumentException ignored) {
|
} catch (IllegalArgumentException ignored) {
|
||||||
// expected exception; no-op
|
// expected exception; no-op
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CR 6692802: HttpOnly flag
|
||||||
|
test("set-cookie: CUSTOMER=WILE_E_COYOTE;HttpOnly").httpOnly(true);
|
||||||
|
test("set-cookie: CUSTOMER=WILE_E_COYOTE").httpOnly(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void header(String prompt) {
|
static void header(String prompt) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue