forked from zaclys/searxng
		
	Merge pull request #1706 from dalf/fix-autocomplete-post
Fix: autocomplete with the POST method: url encode the user query
This commit is contained in:
		
						commit
						8bdc6986a1
					
				
					 3 changed files with 40 additions and 3 deletions
				
			
		
							
								
								
									
										4
									
								
								searx/static/themes/simple/js/searxng.min.js
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								searx/static/themes/simple/js/searxng.min.js
									
										
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							|  | @ -68,6 +68,43 @@ | ||||||
|         }, "#" + qinput_id); |         }, "#" + qinput_id); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|  |       /* | ||||||
|  |         Monkey patch autocomplete.js to fix a bug | ||||||
|  |         With the POST method, the values are not URL encoded: query like "1 + 1" are sent as "1  1" since space are URL encoded as plus. | ||||||
|  |         See HTML specifications: | ||||||
|  |         * HTML5: https://url.spec.whatwg.org/#concept-urlencoded-serializer
 | ||||||
|  |         * HTML4: https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
 | ||||||
|  | 
 | ||||||
|  |         autocomplete.js does not URL encode the name and values: | ||||||
|  |         https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/src/autocomplete.ts#L665
 | ||||||
|  | 
 | ||||||
|  |         The monkey patch overrides the compiled version of the ajax function. | ||||||
|  |         See https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/dist/autocomplete.js#L143-L158
 | ||||||
|  |         The patch changes only the line 156 from | ||||||
|  |           params.Request.send(params._QueryArg() + "=" + params._Pre()); | ||||||
|  |         to | ||||||
|  |           params.Request.send(encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(params._Pre())); | ||||||
|  | 
 | ||||||
|  |         Related to: | ||||||
|  |         * https://github.com/autocompletejs/autocomplete.js/issues/78
 | ||||||
|  |         * https://github.com/searxng/searxng/issues/1695
 | ||||||
|  |        */ | ||||||
|  |       AutoComplete.prototype.ajax = function (params, request, timeout) { | ||||||
|  |         if (timeout === void 0) { timeout = true; } | ||||||
|  |         if (params.$AjaxTimer) { | ||||||
|  |           window.clearTimeout(params.$AjaxTimer); | ||||||
|  |         } | ||||||
|  |         if (timeout === true) { | ||||||
|  |           params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay); | ||||||
|  |         } else { | ||||||
|  |           if (params.Request) { | ||||||
|  |             params.Request.abort(); | ||||||
|  |           } | ||||||
|  |           params.Request = request; | ||||||
|  |           params.Request.send(encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(params._Pre())); | ||||||
|  |         } | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|       if (!isMobile && document.querySelector('.index_endpoint')) { |       if (!isMobile && document.querySelector('.index_endpoint')) { | ||||||
|         qinput.focus(); |         qinput.focus(); | ||||||
|       } |       } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Markus Heiser
						Markus Heiser