codecov-io: ## [Current coverage](https://codecov.io/gh/falconry/falcon/pull/920?src=pr) is 100% (diff: 100%)
> Merging [#920](https://codecov.io/gh/falconry/falcon/pull/920?src=pr) into [master](https://codecov.io/gh/falconry/falcon/branch/master?src=pr) will not change coverage

```diff
@@           master   #920   diff @@
====================================
  Files          31     31          
  Lines        1970   1970          
  Methods         0      0          
  Messages        0      0          
  Branches      320    320          
====================================
  Hits         1970   1970          
  Misses          0      0          
  Partials        0      0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [45b4176...c168cd0](https://codecov.io/gh/falconry/falcon/compare/45b4176111bce9e52282c2922c0d60a3214ef9f0...c168cd0a120297021fc692468d442c40f83d84af?src=pr)
diff --git a/falcon/request.py b/falcon/request.py
index 5557fa7..b5fbc68 100644
--- a/falcon/request.py
+++ b/falcon/request.py
@@ -46,8 +46,8 @@ SimpleCookie = http_cookies.SimpleCookie
 DEFAULT_ERROR_LOG_FORMAT = (u'{0:%Y-%m-%d %H:%M:%S} [FALCON] [ERROR]'
                             u' {1} {2}{3} => ')
 
-TRUE_STRINGS = ('true', 'True', 'yes', '1')
-FALSE_STRINGS = ('false', 'False', 'no', '0')
+TRUE_STRINGS = ('true', 'True', 'yes', '1', 'on')
+FALSE_STRINGS = ('false', 'False', 'no', '0', 'off')
 WSGI_CONTENT_HEADERS = ('CONTENT_TYPE', 'CONTENT_LENGTH')
 
 # PERF(kgriffs): Avoid an extra namespace lookup when using these functions
@@ -948,8 +948,8 @@ class Request(object):
 
         The following boolean strings are supported::
 
-            TRUE_STRINGS = ('true', 'True', 'yes', '1')
-            FALSE_STRINGS = ('false', 'False', 'no', '0')
+            TRUE_STRINGS = ('true', 'True', 'yes', '1', 'on')
+            FALSE_STRINGS = ('false', 'False', 'no', '0', 'off')
 
         Args:
             name (str): Parameter name, case-sensitive (e.g., 'detailed').

Add additional values on get_param_as_bool like ON, OFF
Hello,

How about add to get_param_as_bool values 

TRUE_STRINGS = [ ... , "on" ]
FALSE_STRINGS = [..., "off" ]

This is related to default value in checkbox on Internet Explorer.

Thanx.
diff --git a/tests/test_query_params.py b/tests/test_query_params.py
index 0b6a053..3cfe398 100644
--- a/tests/test_query_params.py
+++ b/tests/test_query_params.py
@@ -257,7 +257,8 @@ class _TestQueryParams(testing.TestBase):
 
     def test_boolean(self):
         query_string = ('echo=true&doit=false&bogus=bar&bogus2=foo&'
-                        't1=True&f1=False&t2=yes&f2=no&blank&one=1&zero=0')
+                        't1=True&f1=False&t2=yes&f2=no&blank&one=1&zero=0&'
+                        'checkbox1=on&checkbox2=off')
         self.simulate_request('/', query_string=query_string)
 
         req = self.resource.captured_req
@@ -285,6 +286,9 @@ class _TestQueryParams(testing.TestBase):
         self.assertEqual(req.get_param_as_bool('zero'), False)
         self.assertEqual(req.get_param('blank'), None)
 
+        self.assertEqual(req.get_param_as_bool('checkbox1'), True)
+        self.assertEqual(req.get_param_as_bool('checkbox2'), False)
+
         store = {}
         self.assertEqual(req.get_param_as_bool('echo', store=store), True)
         self.assertEqual(store['echo'], True)

pip install -e .
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.5
tools/test-requires
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
charset-normalizer==2.0.12
coverage==6.2
ddt==1.7.2
-e git+https://github.com/falconry/falcon.git@0fd502cdfe11942871b823c5c6204a52ef2b8428#egg=falcon
fixtures==4.0.1
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
packaging==21.3
pbr==6.1.1
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
python-mimeparse==1.6.0
PyYAML==6.0.1
requests==2.27.1
six==1.17.0
testtools==2.6.0
tomli==1.2.3
typing_extensions==4.1.1
urllib3==1.26.20
zipp==3.6.0

name: falcon
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - charset-normalizer==2.0.12
      - coverage==6.2
      - ddt==1.7.2
      - fixtures==4.0.1
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pbr==6.1.1
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - python-mimeparse==1.6.0
      - pyyaml==6.0.1
      - requests==2.27.1
      - six==1.17.0
      - testtools==2.6.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - zipp==3.6.0
prefix: /opt/conda/envs/falcon

tests/test_query_params.py::_TestQueryParams::test_boolean tests/test_query_params.py::PostQueryParams::test_boolean tests/test_query_params.py::GetQueryParams::test_boolean
tests/test_query_params.py::_TestQueryParams::test_allowed_names tests/test_query_params.py::_TestQueryParams::test_bad_percentage tests/test_query_params.py::_TestQueryParams::test_blank tests/test_query_params.py::_TestQueryParams::test_boolean_blank tests/test_query_params.py::_TestQueryParams::test_get_date_invalid tests/test_query_params.py::_TestQueryParams::test_get_date_missing_param tests/test_query_params.py::_TestQueryParams::test_get_date_store tests/test_query_params.py::_TestQueryParams::test_get_date_valid tests/test_query_params.py::_TestQueryParams::test_get_date_valid_with_format tests/test_query_params.py::_TestQueryParams::test_get_dict_invalid tests/test_query_params.py::_TestQueryParams::test_get_dict_missing_param tests/test_query_params.py::_TestQueryParams::test_get_dict_store tests/test_query_params.py::_TestQueryParams::test_get_dict_valid tests/test_query_params.py::_TestQueryParams::test_int tests/test_query_params.py::_TestQueryParams::test_int_neg tests/test_query_params.py::_TestQueryParams::test_list_transformer tests/test_query_params.py::_TestQueryParams::test_list_type tests/test_query_params.py::_TestQueryParams::test_list_type_blank tests/test_query_params.py::_TestQueryParams::test_multiple_form_keys tests/test_query_params.py::_TestQueryParams::test_multiple_form_keys_as_list tests/test_query_params.py::_TestQueryParams::test_multiple_keys_as_bool tests/test_query_params.py::_TestQueryParams::test_multiple_keys_as_int tests/test_query_params.py::_TestQueryParams::test_none tests/test_query_params.py::_TestQueryParams::test_option_auto_parse_qs_csv_complex_false tests/test_query_params.py::_TestQueryParams::test_option_auto_parse_qs_csv_simple_false tests/test_query_params.py::_TestQueryParams::test_option_auto_parse_qs_csv_simple_true tests/test_query_params.py::_TestQueryParams::test_param_property tests/test_query_params.py::_TestQueryParams::test_percent_encoded tests/test_query_params.py::_TestQueryParams::test_required_1_get_param tests/test_query_params.py::_TestQueryParams::test_required_2_get_param_as_int tests/test_query_params.py::_TestQueryParams::test_required_3_get_param_as_bool tests/test_query_params.py::_TestQueryParams::test_required_4_get_param_as_list tests/test_query_params.py::_TestQueryParams::test_simple tests/test_query_params.py::PostQueryParams::test_allowed_names tests/test_query_params.py::PostQueryParams::test_bad_percentage tests/test_query_params.py::PostQueryParams::test_blank tests/test_query_params.py::PostQueryParams::test_boolean_blank tests/test_query_params.py::PostQueryParams::test_empty_body tests/test_query_params.py::PostQueryParams::test_empty_body_no_content_length tests/test_query_params.py::PostQueryParams::test_explicitly_disable_auto_parse tests/test_query_params.py::PostQueryParams::test_get_date_invalid tests/test_query_params.py::PostQueryParams::test_get_date_missing_param tests/test_query_params.py::PostQueryParams::test_get_date_store tests/test_query_params.py::PostQueryParams::test_get_date_valid tests/test_query_params.py::PostQueryParams::test_get_date_valid_with_format tests/test_query_params.py::PostQueryParams::test_get_dict_invalid tests/test_query_params.py::PostQueryParams::test_get_dict_missing_param tests/test_query_params.py::PostQueryParams::test_get_dict_store tests/test_query_params.py::PostQueryParams::test_get_dict_valid tests/test_query_params.py::PostQueryParams::test_int tests/test_query_params.py::PostQueryParams::test_int_neg tests/test_query_params.py::PostQueryParams::test_list_transformer tests/test_query_params.py::PostQueryParams::test_list_type tests/test_query_params.py::PostQueryParams::test_list_type_blank tests/test_query_params.py::PostQueryParams::test_multiple_form_keys tests/test_query_params.py::PostQueryParams::test_multiple_form_keys_as_list tests/test_query_params.py::PostQueryParams::test_multiple_keys_as_bool tests/test_query_params.py::PostQueryParams::test_multiple_keys_as_int tests/test_query_params.py::PostQueryParams::test_non_ascii tests/test_query_params.py::PostQueryParams::test_none tests/test_query_params.py::PostQueryParams::test_option_auto_parse_qs_csv_complex_false tests/test_query_params.py::PostQueryParams::test_option_auto_parse_qs_csv_simple_false tests/test_query_params.py::PostQueryParams::test_option_auto_parse_qs_csv_simple_true tests/test_query_params.py::PostQueryParams::test_param_property tests/test_query_params.py::PostQueryParams::test_percent_encoded tests/test_query_params.py::PostQueryParams::test_required_1_get_param tests/test_query_params.py::PostQueryParams::test_required_2_get_param_as_int tests/test_query_params.py::PostQueryParams::test_required_3_get_param_as_bool tests/test_query_params.py::PostQueryParams::test_required_4_get_param_as_list tests/test_query_params.py::PostQueryParams::test_simple tests/test_query_params.py::GetQueryParams::test_allowed_names tests/test_query_params.py::GetQueryParams::test_bad_percentage tests/test_query_params.py::GetQueryParams::test_blank tests/test_query_params.py::GetQueryParams::test_boolean_blank tests/test_query_params.py::GetQueryParams::test_get_date_invalid tests/test_query_params.py::GetQueryParams::test_get_date_missing_param tests/test_query_params.py::GetQueryParams::test_get_date_store tests/test_query_params.py::GetQueryParams::test_get_date_valid tests/test_query_params.py::GetQueryParams::test_get_date_valid_with_format tests/test_query_params.py::GetQueryParams::test_get_dict_invalid tests/test_query_params.py::GetQueryParams::test_get_dict_missing_param tests/test_query_params.py::GetQueryParams::test_get_dict_store tests/test_query_params.py::GetQueryParams::test_get_dict_valid tests/test_query_params.py::GetQueryParams::test_int tests/test_query_params.py::GetQueryParams::test_int_neg tests/test_query_params.py::GetQueryParams::test_list_transformer tests/test_query_params.py::GetQueryParams::test_list_type tests/test_query_params.py::GetQueryParams::test_list_type_blank tests/test_query_params.py::GetQueryParams::test_multiple_form_keys tests/test_query_params.py::GetQueryParams::test_multiple_form_keys_as_list tests/test_query_params.py::GetQueryParams::test_multiple_keys_as_bool tests/test_query_params.py::GetQueryParams::test_multiple_keys_as_int tests/test_query_params.py::GetQueryParams::test_none tests/test_query_params.py::GetQueryParams::test_option_auto_parse_qs_csv_complex_false tests/test_query_params.py::GetQueryParams::test_option_auto_parse_qs_csv_simple_false tests/test_query_params.py::GetQueryParams::test_option_auto_parse_qs_csv_simple_true tests/test_query_params.py::GetQueryParams::test_param_property tests/test_query_params.py::GetQueryParams::test_percent_encoded tests/test_query_params.py::GetQueryParams::test_required_1_get_param tests/test_query_params.py::GetQueryParams::test_required_2_get_param_as_int tests/test_query_params.py::GetQueryParams::test_required_3_get_param_as_bool tests/test_query_params.py::GetQueryParams::test_required_4_get_param_as_list tests/test_query_params.py::GetQueryParams::test_simple tests/test_query_params.py::PostQueryParamsDefaultBehavior::test_dont_auto_parse_by_default
falcon/request.py
falcon/request.py