From: <rb...@us...> - 2017-06-07 09:49:22
|
Revision: 14569 http://sourceforge.net/p/htmlunit/code/14569 Author: rbri Date: 2017-06-07 09:49:19 +0000 (Wed, 07 Jun 2017) Log Message: ----------- header fix (Chrome, FF52) Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection3Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java 2017-06-07 07:09:23 UTC (rev 14568) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java 2017-06-07 09:49:19 UTC (rev 14569) @@ -187,7 +187,7 @@ FIREFOX_52.setVendor(""); FIREFOX_52.buildId_ = "20170517122419"; FIREFOX_52.setHeaderNamesOrdered(new String[] { - "Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Referer", "Cookie", "Connection"}); + "Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Referer", "Cookie", "Connection", "Upgrade-Insecure-Requests"}); FIREFOX_52.setHtmlAcceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); FIREFOX_52.setCssAcceptHeader("text/css,*/*;q=0.1"); @@ -213,7 +213,7 @@ CHROME.setPlatform("MacIntel"); CHROME.setCpuClass(null); CHROME.setHeaderNamesOrdered(new String[] { - "Host", "Connection", "Accept", "User-Agent", "Referer", "Accept-Encoding", "Accept-Language", "Cookie"}); + "Host", "Connection", "Upgrade-Insecure-Requests", "User-Agent", "Accept", "Referer", "Accept-Encoding", "Accept-Language", "Cookie"}); CHROME.setHtmlAcceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); CHROME.setImgAcceptHeader("image/webp,image/apng,image/*,*/*;q=0.8"); CHROME.setCssAcceptHeader("text/css,*/*;q=0.1"); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-06-07 07:09:23 UTC (rev 14568) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-06-07 09:49:19 UTC (rev 14569) @@ -521,6 +521,10 @@ @BrowserFeature({CHROME, FF}) HTTP_COOKIE_START_DATE_1970, + /** Browser sends Upgrade-Insecure-Requests header. */ + @BrowserFeature({CHROME, FF52}) + HTTP_HEADER_UPGRADE_INSECURE_REQUEST, + /** Supports redirect via 308 code. */ @BrowserFeature({CHROME, FF}) HTTP_REDIRECT_308, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2017-06-07 07:09:23 UTC (rev 14568) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2017-06-07 09:49:19 UTC (rev 14569) @@ -802,6 +802,9 @@ else if ("Accept-Encoding".equals(header) && requestHeaders.get(header) != null) { list.add(new AcceptEncodingHeaderHttpRequestInterceptor(requestHeaders.get(header))); } + else if ("Upgrade-Insecure-Requests".equals(header) && requestHeaders.get(header) != null) { + list.add(new UpgradeInsecureRequestHeaderHttpRequestInterceptor(requestHeaders.get(header))); + } else if ("Referer".equals(header) && requestHeaders.get(header) != null) { list.add(new RefererHeaderHttpRequestInterceptor(requestHeaders.get(header))); } @@ -886,7 +889,19 @@ request.setHeader("Accept-Language", value_); } } + private static final class UpgradeInsecureRequestHeaderHttpRequestInterceptor implements HttpRequestInterceptor { + private String value_; + UpgradeInsecureRequestHeaderHttpRequestInterceptor(final String value) { + value_ = value; + } + + @Override + public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException { + request.setHeader("Upgrade-Insecure-Requests", value_); + } + } + private static final class AcceptEncodingHeaderHttpRequestInterceptor implements HttpRequestInterceptor { private String value_; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2017-06-07 07:09:23 UTC (rev 14568) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2017-06-07 09:49:19 UTC (rev 14569) @@ -15,6 +15,7 @@ package com.gargoylesoftware.htmlunit; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.DIALOGWINDOW_REFERER; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTTP_HEADER_UPGRADE_INSECURE_REQUEST; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTTP_REDIRECT_308; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SUPPORT_VIA_ACTIVEXOBJECT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.URL_MINIMAL_QUERY_ENCODING; @@ -1468,6 +1469,10 @@ if (!wrs.isAdditionalHeader("Accept-Language")) { wrs.setAdditionalHeader("Accept-Language", getBrowserVersion().getBrowserLanguage()); } + if (getBrowserVersion().hasFeature(HTTP_HEADER_UPGRADE_INSECURE_REQUEST) + && !wrs.isAdditionalHeader("Upgrade-Insecure-Requests")) { + wrs.setAdditionalHeader("Upgrade-Insecure-Requests", "1"); + } // Add user-specified headers last so that they can override HtmlUnit defaults. wrs.getAdditionalHeaders().putAll(requestHeaders_); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection3Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection3Test.java 2017-06-07 07:09:23 UTC (rev 14568) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection3Test.java 2017-06-07 09:49:19 UTC (rev 14569) @@ -34,6 +34,7 @@ * Tests using the {@link PrimitiveWebServer}. * * @author Ahmed Ashour + * @author Ronald Brill */ @RunWith(BrowserRunner.class) public class HttpWebConnection3Test extends WebDriverTestCase { @@ -46,7 +47,9 @@ @Test @Alerts(CHROME = {"Host", "Connection", "Upgrade-Insecure-Requests", "User-Agent", "Accept", "Accept-Encoding", "Accept-Language"}, - FF = {"Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Connection"}, + FF45 = {"Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Connection"}, + FF52 = {"Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", + "Connection", "Upgrade-Insecure-Requests"}, IE = {"Accept", "Accept-Language", "User-Agent", "Accept-Encoding", "Host", "DNT", "Connection"}) @NotYetImplemented(IE) public void headers() throws Exception { @@ -88,8 +91,10 @@ @Alerts(CHROME = {"Host", "Connection", "Upgrade-Insecure-Requests", "User-Agent", "Accept", "Referer", "Accept-Encoding", "Accept-Language", "Cookie"}, - FF = {"Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Referer", "Cookie", + FF45 = {"Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Referer", "Cookie", "Connection"}, + FF52 = {"Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Referer", "Cookie", + "Connection", "Upgrade-Insecure-Requests"}, IE = {"Accept", "Referer", "Accept-Language", "User-Agent", "Accept-Encoding", "Host", "DNT", "Connection", "Cookie"}) @NotYetImplemented(IE) |