diff options
| -rw-r--r-- | ChangeLog | 32 | ||||
| -rw-r--r-- | file.c | 2 | ||||
| -rw-r--r-- | form.c | 5 | 
3 files changed, 35 insertions, 4 deletions
| @@ -1,3 +1,35 @@ +2017-08-27  Kyle J. McKay  <mackyle@gmail.com> + +	Correct <base ...> parsing and do not turn a form's GET into POST +	Bug-Debian: https://github.com/tats/w3m/pull/93 + +	* form.c: +	form.c: do not gratuitously turn GET into POST. +	When encountering a <form ...> tag that contains these values: +	    method="get" enctype="multipart/form-data" +	Do not transform the method into POST to accomodate enctype. +	Instead behave in the compatible way that all other browsers +	behave in this instance and ignore the enctype parameter +	(treating it as the default application/x-www-form-urlencoded) +	and perform a "GET" just as the method parameter requests. +	This behavior produces far more compatible results than +	gratuitously changing the "get" into a "post" which can +	result in unexpected "405 Method Not Allowed" errors. +	Signed-off-by: Kyle J. McKay <mackyle@gmail.com> + +	* file.c: +	file.c: compute correct base URL when not absolute. +	When a server makes use of the PATH_INFO feature in a CGI, +	the returned pages may often have a <base href="..." /> tag +	specifying the URL of the CGI itself as the base. +	However, to avoid hard-coding the scheme and host into such +	a base href, the href value will often omit the scheme, host +	and port. +	Make sure that when parsing any such base href value that +	any omitted components are taken from the current URL rather +	than taken as being from a bare, absolute file:/// URL. +	Signed-off-by: Kyle J. McKay <mackyle@gmail.com> +  2017-01-02  Tatsuya Kinoshita  <tats@debian.org>  	* NEWS: Update NEWS. @@ -5993,7 +5993,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  				       buf->document_charset);  			if (!buf->baseURL)  			    buf->baseURL = New(ParsedURL); -			parseURL(p, buf->baseURL, NULL); +			parseURL2(p, buf->baseURL, &buf->currentURL);  #if defined(USE_M17N) || defined(USE_IMAGE)  			base = buf->baseURL;  #endif @@ -56,10 +56,9 @@ newFormList(char *action, char *method, char *charset, char *enctype,  	m = FORM_METHOD_INTERNAL;      /* unknown method is regarded as 'get' */ -    if (enctype != NULL && !strcasecmp(enctype, "multipart/form-data")) { +    if (m != FORM_METHOD_GET && enctype != NULL && +	!strcasecmp(enctype, "multipart/form-data")) {  	e = FORM_ENCTYPE_MULTIPART; -	if (m == FORM_METHOD_GET) -	    m = FORM_METHOD_POST;      }  #ifdef USE_M17N | 
