From: <rb...@us...> - 2017-06-13 12:11:09
|
Revision: 14605 http://sourceforge.net/p/htmlunit/code/14605 Author: rbri Date: 2017-06-13 12:11:06 +0000 (Tue, 13 Jun 2017) Log Message: ----------- fix header for form submit (Chrome) Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection2Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-06-13 11:18:24 UTC (rev 14604) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-06-13 12:11:06 UTC (rev 14605) @@ -265,10 +265,22 @@ @BrowserFeature({CHROME, FF}) FORM_FORM_ATTRIBUTE_SUPPORTED, + /** Form submit includes the Cache-Control: max-age=0 header. */ + @BrowserFeature(CHROME) + FORM_SUBMISSION_HEADER_CACHE_CONTROL_MAX_AGE, + + /** Form submit includes the Cache-Control: cn-cache header. */ + @BrowserFeature(IE) + FORM_SUBMISSION_HEADER_CACHE_CONTROL_NO_CACHE, + /** Form submit forces an real request also if only the hash was changed. */ @BrowserFeature(CHROME) FORM_SUBMISSION_DOWNLOWDS_ALSO_IF_ONLY_HASH_CHANGED, + /** Form submit includes the origin header. */ + @BrowserFeature(CHROME) + FORM_SUBMISSION_HEADER_ORIGIN, + /** Form submit is done without the hash part of the action url. */ @BrowserFeature(IE) FORM_SUBMISSION_URL_WITHOUT_HASH, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java 2017-06-13 11:18:24 UTC (rev 14604) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java 2017-06-13 12:11:06 UTC (rev 14605) @@ -15,6 +15,9 @@ package com.gargoylesoftware.htmlunit.html; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.FORM_SUBMISSION_DOWNLOWDS_ALSO_IF_ONLY_HASH_CHANGED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.FORM_SUBMISSION_HEADER_CACHE_CONTROL_MAX_AGE; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.FORM_SUBMISSION_HEADER_CACHE_CONTROL_NO_CACHE; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.FORM_SUBMISSION_HEADER_ORIGIN; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.FORM_SUBMISSION_URL_WITHOUT_HASH; import java.net.MalformedURLException; @@ -237,8 +240,20 @@ request.setEncodingType(FormEncodingType.getInstance(getEnctypeAttribute())); } request.setCharset(getSubmitCharset()); - request.setAdditionalHeader("Referer", htmlPage.getUrl() - .toExternalForm()); + + String referer = htmlPage.getUrl().toExternalForm(); + request.setAdditionalHeader("Referer", referer); + if (browser.hasFeature(FORM_SUBMISSION_HEADER_ORIGIN)) { + referer = StringUtils.stripEnd(referer, "/"); + request.setAdditionalHeader("Origin", referer); + } + if (browser.hasFeature(FORM_SUBMISSION_HEADER_CACHE_CONTROL_MAX_AGE)) { + request.setAdditionalHeader("Cache-Control", "max-age=0"); + } + if (browser.hasFeature(FORM_SUBMISSION_HEADER_CACHE_CONTROL_NO_CACHE)) { + request.setAdditionalHeader("Cache-Control", "no-cache"); + } + return request; } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection2Test.java 2017-06-13 11:18:24 UTC (rev 14604) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnection2Test.java 2017-06-13 12:11:06 UTC (rev 14605) @@ -14,7 +14,6 @@ */ package com.gargoylesoftware.htmlunit; -import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.CHROME; import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.IE; import static java.nio.charset.StandardCharsets.ISO_8859_1; @@ -50,7 +49,7 @@ * @throws Exception if the test fails */ @Test - @NotYetImplemented({CHROME, IE}) + @NotYetImplemented(IE) public void post() throws Exception { final String html = "<html><body><form action='foo' method='post' accept-charset='iso-8859-1'>\n" + "<input name='text1' value='me &amp; you'>\n" |