Code 400 error code param is empty

I am thinking 412 (Precondition Failed) but there may be a better standard?

I am thinking 412 (Precondition Failed) but there may be a better standard?

Daniel Vassallo's user avatar

asked Jun 16, 2010 at 3:19

EA.'s user avatar

2

Status 422 seems most appropiate based on the spec.

The 422 (Unprocessable Entity) status code means the server
understands the content type of the request entity (hence a
415(Unsupported Media Type) status code is inappropriate), and the
syntax of the request entity is correct (thus a 400 (Bad Request)
status code is inappropriate) but was unable to process the contained
instructions. For example, this error condition may occur if an XML
request body contains well-formed (i.e., syntactically correct), but
semantically erroneous, XML instructions.

They state that malformed xml is an example of bad syntax (calling for a 400). A malformed query string seems analogous to this, so 400 doesn’t seem appropriate for a well-formed query-string which is missing a param.

Note: Since the above RFC is about WebDAV there can be a misunderstanding that 422 and some others are only to be used in the context of WebDAV and using them outside of it is «nonstandard». But this only means these status codes were introduced in the context of this RFC. Indeed the wording of these definitions is carefully chosen not to be specific to WebDAV.

David Ongaro's user avatar

David Ongaro

3,3601 gold badge23 silver badges35 bronze badges

answered Apr 25, 2012 at 20:14

Kelvin's user avatar

KelvinKelvin

19.6k2 gold badges60 silver badges65 bronze badges

18

I’m not sure there’s a set standard, but I would have used 400 Bad Request, which the latest HTTP spec (from 2014) documents as follows:

6.5.1. 400 Bad Request

The 400 (Bad Request) status code indicates that the server cannot or
will not process the request due to something that is perceived to be
a client error (e.g., malformed request syntax, invalid request
message framing, or deceptive request routing).

Community's user avatar

answered Jun 16, 2010 at 3:32

Gert Grenander's user avatar

Gert GrenanderGert Grenander

16.7k6 gold badges39 silver badges43 bronze badges

12

The WCF API in .NET handles missing parameters by returning an HTTP 404 «Endpoint Not Found» error, when using the webHttpBinding.

The 404 Not Found can make sense if you consider your web service method name together with its parameter signature. That is, if you expose a web service method LoginUser(string, string) and you request LoginUser(string), the latter is not found.

Basically this would mean that the web service method you are calling, together with the parameter signature you specified, cannot be found.

10.4.5 404 Not Found

The server has not found anything matching the Request-URI. No
indication is given of whether the condition is temporary or
permanent.

The 400 Bad Request, as Gert suggested, remains a valid response code, but I think it is normally used to indicate lower-level problems. It could easily be interpreted as a malformed HTTP request, maybe missing or invalid HTTP headers, or similar.

10.4.1 400 Bad Request

The request could not be understood by the server due to malformed
syntax. The client SHOULD NOT repeat the request without
modifications.

Community's user avatar

answered Jun 16, 2010 at 3:55

Daniel Vassallo's user avatar

Daniel VassalloDaniel Vassallo

334k71 gold badges501 silver badges441 bronze badges

7

You can send a 400 Bad Request code. It’s one of the more general-purpose 4xx status codes, so you can use it to mean what you intend: the client is sending a request that’s missing information/parameters that your application requires in order to process it correctly.

answered Jun 16, 2010 at 3:32

BoltClock's user avatar

BoltClockBoltClock

687k158 gold badges1373 silver badges1349 bronze badges

I Usually go for 422 (Unprocessable entity) if something in the required parameters didn’t match what the API endpoint required (like a too short password) but for a missing parameter i would go for 406 (Unacceptable).

answered Mar 6, 2014 at 9:32

Elad Meidar's user avatar

Elad MeidarElad Meidar

7646 silver badges11 bronze badges

3

In one of our API project we decide to set a 409 Status to some request, when we can’t full fill it at 100% because of missing parameter.

HTTP Status Code «409 Conflict» was for us a good try because it’s definition
require to include enough information for the user to recognize the
source of the conflict.

Reference: w3.org/Protocols/

So among other response like 400 or 404 we chose 409 to enforce the need for looking over some notes in the request helpful to set up a new and right request.

Any way our case it was particular because we need to send out some data eve if the request was not completely correct, and we need to enforce the client to look at the message and understand what was wrong in the request.

In general if we have only some missing parameter we go for a 400 and an array of missing parameter. But when we need to send some more information, like a particular case message and we want to be more sure the client will take care of it we send a 409

answered Jan 8, 2015 at 14:06

gabrielem's user avatar

gabrielemgabrielem

5605 silver badges13 bronze badges

3

For those interested, Spring MVC (3.x at least) returns a 400 in this case, which seems wrong to me.

I tested several Google URLs (accounts.google.com) and removed required parameters, and they generally return a 404 in this case.

I would copy Google.

answered May 19, 2012 at 21:01

Relefant's user avatar

RelefantRelefant

89310 silver badges10 bronze badges

5

It could be argued that a 404 Not Found should be used since the resource specified could not be found.

Luca's user avatar

Luca

9,0335 gold badges45 silver badges59 bronze badges

answered Jan 17, 2012 at 14:44

Ray's user avatar

3

I often use a 403 Forbidden error. The reasoning is that the request was understood, but I’m not going to do as asked (because things are wrong). The response entity explains what is wrong, so if the response is an HTML page, the error messages are in the page. If it’s a JSON or XML response, the error information is in there.

From rfc2616:

10.4.4 403 Forbidden

The server understood the request, but is refusing to fulfill it.
Authorization will not help and the request SHOULD NOT be repeated.
If the request method was not HEAD and the server wishes to make
public why the request has not been fulfilled, it SHOULD describe the
reason for the refusal in the entity. If the server does not wish to
make this information available to the client, the status code 404
(Not Found) can be used instead.

Community's user avatar

answered Feb 23, 2012 at 22:36

cdeszaq's user avatar

cdeszaqcdeszaq

30.5k25 gold badges115 silver badges173 bronze badges

5

Just go to the browser settings > Shields > Auto-redirect AMP pages
Disable it and try again …

answered Oct 18, 2022 at 21:18

Talal khawaja's user avatar

Bug description
After adding a patch to support Keycloak SSO, if the login is successful, I receive an Authentication process error canceled.

Steps to reproduce
Steps to reproduce the behavior:

  1. Add patch with support Keycloak
diff --git a/dojo/context_processors.py b/dojo/context_processors.py
index 3ae170f..d3dd192 100644
--- a/dojo/context_processors.py
+++ b/dojo/context_processors.py
@@ -9,6 +9,7 @@ def globalize_oauth_vars(request):
             'GOOGLE_ENABLED': settings.GOOGLE_OAUTH_ENABLED,
             'OKTA_ENABLED': settings.OKTA_OAUTH_ENABLED,
             'GITLAB_ENABLED': settings.GITLAB_OAUTH2_ENABLED,
+            'KEYCLOAK_ENABLED': settings.KEYCLOAK_OAUTH2_ENABLED,
             'AZUREAD_TENANT_OAUTH2_ENABLED': settings.AZUREAD_TENANT_OAUTH2_ENABLED,
             'SAML2_ENABLED': settings.SAML2_ENABLED,
             'SAML2_LOGOUT_URL': settings.SAML2_LOGOUT_URL}
diff --git a/dojo/settings/settings.dist.py b/dojo/settings/settings.dist.py
index 13108d2..b011097 100644
--- a/dojo/settings/settings.dist.py
+++ b/dojo/settings/settings.dist.py
@@ -96,6 +96,13 @@ env = environ.Env(
     DD_SOCIAL_AUTH_GITLAB_SECRET=(str, ''),
     DD_SOCIAL_AUTH_GITLAB_API_URL=(str, 'https://gitlab.com'),
     DD_SOCIAL_AUTH_GITLAB_SCOPE=(list, ['api', 'read_user', 'openid', 'profile', 'email']),
+    DD_SOCIAL_AUTH_KEYCLOAK_OAUTH2_ENABLED=(bool, False),
+    DD_SOCIAL_AUTH_KEYCLOAK_KEY=(str, ''),
+    DD_SOCIAL_AUTH_KEYCLOAK_SECRET=(str, ''),
+    DD_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY=(str, ''),
+    DD_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL=(str, ''),
+    DD_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL=(str, ''),
+    DD_SOCIAL_AUTH_KEYCLOAK_ID_KEY=(str, 'email'),
     DD_SAML2_ENABLED=(bool, False),
     DD_SAML2_METADATA_AUTO_CONF_URL=(str, ''),
     DD_SAML2_METADATA_LOCAL_FILE_PATH=(str, ''),
@@ -320,6 +327,7 @@ AUTHENTICATION_BACKENDS = (
     'dojo.okta.OktaOAuth2',
     'social_core.backends.azuread_tenant.AzureADTenantOAuth2',
     'social_core.backends.gitlab.GitLabOAuth2',
+    'social_core.backends.keycloak.KeycloakOAuth2',
     'django.contrib.auth.backends.RemoteUserBackend',
     'django.contrib.auth.backends.ModelBackend',
 )
@@ -370,6 +378,14 @@ SOCIAL_AUTH_GITLAB_SECRET = env('DD_SOCIAL_AUTH_GITLAB_SECRET')
 SOCIAL_AUTH_GITLAB_API_URL = env('DD_SOCIAL_AUTH_GITLAB_API_URL')
 SOCIAL_AUTH_GITLAB_SCOPE = env('DD_SOCIAL_AUTH_GITLAB_SCOPE')
 
+KEYCLOAK_OAUTH2_ENABLED = env('DD_SOCIAL_AUTH_KEYCLOAK_OAUTH2_ENABLED')
+SOCIAL_AUTH_KEYCLOAK_KEY = env('DD_SOCIAL_AUTH_KEYCLOAK_KEY')
+SOCIAL_AUTH_KEYCLOAK_SECRET = env('DD_SOCIAL_AUTH_KEYCLOAK_SECRET')
+SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY = env('DD_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY')
+SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL = env('DD_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL')
+SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL = env('DD_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL')
+SOCIAL_AUTH_KEYCLOAK_ID_KEY = env('DD_SOCIAL_AUTH_KEYCLOAK_ID_KEY')
+
 AUTH0_OAUTH2_ENABLED = env('DD_SOCIAL_AUTH_AUTH0_OAUTH2_ENABLED')
 SOCIAL_AUTH_AUTH0_KEY = env('DD_SOCIAL_AUTH_AUTH0_KEY')
 SOCIAL_AUTH_AUTH0_SECRET = env('DD_SOCIAL_AUTH_AUTH0_SECRET')
@@ -422,6 +438,7 @@ LOGIN_EXEMPT_URLS = (
     r'^%sfinding/image/(?P<token>[^/]+)$' % URL_PREFIX,
     r'^%sapi/v2/' % URL_PREFIX,
     r'complete/',
+    r'complete/keycloak/',
     r'saml2/login',
     r'saml2/acs',
     r'empty_questionnaire/([d]+)/answer'
diff --git a/dojo/templates/dojo/login.html b/dojo/templates/dojo/login.html
index dc4a777..3f68223 100644
--- a/dojo/templates/dojo/login.html
+++ b/dojo/templates/dojo/login.html
@@ -55,6 +55,14 @@
                     </div>
                 {% endif %}
 
+		{% if KEYCLOAK_ENABLED is True %}
+		    <div class="col-sm-offset-1 col-sm-2">
+			<button class="btn btn-success" type="button">
+			    <a href="{% url 'social:begin' 'keycloak' %}?next={{ request.GET.next }}" style="color: rgb(255,255,255)">Login with Keycloak</a>
+			</button>
+		    </div>
+                {% endif %}
+
                 {% if AUTH0_ENABLED is True %}
                     <div class="col-sm-offset-1 col-sm-2">
                         <button class="btn btn-success" type="button">

  1. Add environment variables for DefectDojo:
      DD_SOCIAL_AUTH_KEYCLOAK_OAUTH2_ENABLED: 'True'
      DD_SOCIAL_AUTH_KEYCLOAK_KEY: "defectdojo-dev"
      DD_SOCIAL_AUTH_KEYCLOAK_SECRET: "3f7d1f05f-f1f4-48713-8bd0-d12z2eebbdadd"
      DD_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY: "<public_key>"
      DD_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL: "https://example.com/auth/realms/example/protocol/openid-connect/auth"
      DD_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL: "https://example.com/auth/realms/example/protocol/openid-connect/token"
      DD_SOCIAL_AUTH_KEYCLOAK_ID_KEY: "email"
      SOCIAL_AUTH_RAISE_EXCEPTIONS: 'True'
  1. Configure Keycloak as in docs: https://github.com/python-social-auth/social-core/blob/master/social_core/backends/keycloak.py#L26-L80

  2. Go to defectdojo instance and press button Login with Keycloak.

  3. After completed login in Keycloak redirected to page: http://defectdojo.dc:8080/complete/keycloak/?redirect_state=iMQD3TUft1WiQJJWKUWihgJZ94jlTN6m&session_state=c39bd808-ecb5-45b5-b179-166ff535f8ce
    And see error:
    image

  4. In debug we see request params and response code

args ()
kwargs {‘auth’: None, ‘data’: {‘client_id’: ‘defectdojo-dev’, ‘client_secret’: ‘3f7d1f05f-f1f4-48713-8bd0-d12z2eebbdadd’, ‘code’: », ‘grant_type’: ‘authorization_code’, ‘redirect_uri’: ‘http://defectdojo.dc:8080/complete/keycloak/?redirect_state=iMQD3TUft1WiQJJWKUWihgJZ94jlTN6m’}, ‘headers’: {‘Accept’: ‘application/json’, ‘Content-Type’: ‘application/x-www-form-urlencoded’}, ‘params’: None, ‘timeout’: None}
method ‘POST’
response <Response [400]>
self <social_core.backends.keycloak.KeycloakOAuth2 object at 0x7f634949a780>
url ‘https://example.com/auth/realms/example/protocol/openid-connect/token’
  1. I’m create curl with this params:
curl -X POST -d "client_id=defectdojo-dev" -d "client_secret=3f7d1f05f-f1f4-48713-8bd0-d12z2eebbdadd" -d "code=''" -d "grant_type=authorization_code" -d "redirect_uri=http://defectdojo.dc:8080/complete/keycloak/?redirect_state=RfDaN1Wbzs2WIdP5f5aPU3VTUb6Ijk0l" -H 'Accept: application/json' -H 'Content-Type: application/x-www-form-urlencoded' https://example.com/auth/realms/example/protocol/openid-connect/token -i
HTTP/2 400
date: Fri, 30 Oct 2020 08:45:21 GMT
content-type: application/json
content-length: 62
set-cookie: INGRESS_SESSION_ID=1604047522.535.1076.949539; Path=/auth/realms/example/; Secure; HttpOnly
cache-control: no-store
pragma: no-cache
strict-transport-security: max-age=15724800; includeSubDomains

{"error":"invalid_grant","error_description":"Code not valid"}%

Why code param is empty?

  1. If a go to page http://defectdojo.dc:8080/login?next=/ and press button Login with Keycloak again i can access to defectdojo via my user from Keycloak.
    image

Expected behavior
A clear and concise description of what you expected to happen.

Deployment method (select with an X)

  • Kubernetes
  • Docker
  • setup.bash / legacy-setup.bash

Environment information

  • Operating System: Ubuntu 18.03
  • DefectDojo Commit Message: [2020-10-27 19:03:31 +0100] 1f50e1e: Update new-release-tag-docker.yml [ (grafted, HEAD, tag: 1.9.0)]

Sample scan files (optional)
If applicable, add sample scan files to help reproduce your problem.

Screenshots (optional)
If applicable, add screenshots to help explain your problem.

Console logs (optional)
Log from uwsgi:

uwsgi_1         | Starting new HTTPS connection (1): example.com:443
uwsgi_1         | https://example.com:443 "POST /auth/realms/example/protocol/openid-connect/token HTTP/1.1" 400 62
uwsgi_1         | Internal Server Error: /complete/keycloak/
nginx_1         | 192.168.37.2 - - [30/Oct/2020:08:59:39 +0000] "GET /complete/keycloak/?redirect_state=iMQD3TUft1WiQJJWKUWihgJZ94jlTN6m&session_state=c39bd808-ecb5-45b5-b179-166ff535f8ce HTTP/1.1" 500 143323 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36" "-"
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/utils.py", line 251, in wrapper                                                                                                                                                   uwsgi_1         |     return func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/oauth.py", line 401, in auth_complete
uwsgi_1         |     method=self.ACCESS_TOKEN_METHOD                                                                                                                                                                                                          uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/oauth.py", line 373, in request_access_token
uwsgi_1         |     return self.get_json(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/base.py", line 238, in get_json
uwsgi_1         |     return self.request(url, *args, **kwargs).json()                                                                                                                                                                                         uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/base.py", line 234, in request
uwsgi_1         |     response.raise_for_status()
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 941, in raise_for_status                                                                                                                                            uwsgi_1         |     raise HTTPError(http_error_msg, response=self)
uwsgi_1         | requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://example.com/auth/realms/example/protocol/openid-connect/token
uwsgi_1         |
uwsgi_1         | During handling of the above exception, another exception occurred:
uwsgi_1         |
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
uwsgi_1         |     response = get_response(request)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
uwsgi_1         |     response = self.process_exception_by_middleware(e, request)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
uwsgi_1         |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
uwsgi_1         |     response = view_func(request, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
uwsgi_1         |     return view_func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_django/utils.py", line 49, in wrapper
uwsgi_1         |     return func(request, backend, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_django/views.py", line 33, in complete
uwsgi_1         |     *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/actions.py", line 45, in do_complete
uwsgi_1         |     user = backend.complete(user=user, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/base.py", line 40, in complete
uwsgi_1         |     return self.auth_complete(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/utils.py", line 254, in wrapper
uwsgi_1         |     raise AuthCanceled(args[0], response=err.response)
uwsgi_1         | social_core.exceptions.AuthCanceled: Authentication process canceled
uwsgi_1         | Internal Server Error: /complete/keycloak/
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/utils.py", line 251, in wrapper
uwsgi_1         |     return func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/oauth.py", line 401, in auth_complete
uwsgi_1         |     method=self.ACCESS_TOKEN_METHOD
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/oauth.py", line 373, in request_access_token
uwsgi_1         |     return self.get_json(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/base.py", line 238, in get_json
uwsgi_1         |     return self.request(url, *args, **kwargs).json()
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/base.py", line 234, in request
uwsgi_1         |     response.raise_for_status()
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 941, in raise_for_status
uwsgi_1         |     raise HTTPError(http_error_msg, response=self)
uwsgi_1         | requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://example.com/auth/realms/example/protocol/openid-connect/token
uwsgi_1         |
uwsgi_1         | During handling of the above exception, another exception occurred:
uwsgi_1         |
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
uwsgi_1         |     response = get_response(request)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
uwsgi_1         |     response = self.process_exception_by_middleware(e, request)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
uwsgi_1         |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
uwsgi_1         |     response = view_func(request, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
uwsgi_1         |     return view_func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_django/utils.py", line 49, in wrapper
uwsgi_1         |     return func(request, backend, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_django/views.py", line 33, in complete
uwsgi_1         |     *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/actions.py", line 45, in do_complete
uwsgi_1         |     user = backend.complete(user=user, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/backends/base.py", line 40, in complete
uwsgi_1         |     return self.auth_complete(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.6/site-packages/social_core/utils.py", line 254, in wrapper
uwsgi_1         |     raise AuthCanceled(args[0], response=err.response)
uwsgi_1         | social_core.exceptions.AuthCanceled: Authentication process canceled

Additional context (optional)
Add any other context about the problem here.

Ошибка 400 Bad Request – это код ответа HTTP, который означает, что сервер не смог обработать запрос, отправленный клиентом из-за неверного синтаксиса. Подобные коды ответа HTTP отражают сложные взаимоотношения между клиентом, веб-приложением, сервером, а также зачастую сразу несколькими сторонними веб-сервисами. Из-за этого поиск причины появления ошибки может быть затруднён даже внутри контролируемой среды разработки.

В этой статье мы разберём, что значит ошибка 400 Bad Request (переводится как «Неверный запрос»), и как ее исправить

  • На стороне сервера или на стороне клиента?
  • Начните с тщательного резервного копирования приложения
  • Диагностика ошибки 400 Bad Request
  • Исправление проблем на стороне клиента
    • Проверьте запрошенный URL
    • Очистите соответствующие куки
    • Загрузка файла меньшего размера
    • Выйдите и войдите
  • Отладка на распространённых платформах
    • Откатите последние изменения
    • Удалите новые расширения, модули или плагины
    • Проверьте непреднамеренные изменения в базе данных
  • Поиск проблем на стороне сервера
    • Проверка на неверные заголовки HTTP
    • Просмотрите логи
  • Отладьте код приложения или скриптов

Все коды ответа HTTP из категории 4xx считаются ошибками на стороне клиента. Несмотря на это, появление ошибки 4xx не обязательно означает, что проблема как-то связана с клиентом, под которым понимается веб-браузер или устройство, используемое для доступа к приложению. Зачастую, если вы пытаетесь диагностировать проблему со своим приложением, можно сразу игнорировать большую часть клиентского кода и компонентов, таких как HTML, каскадные таблицы стилей (CSS), клиентский код JavaScript и т.п. Это также применимо не только к сайтам. Многие приложения для смартфонов, которые имеют современный пользовательский интерфейс, представляют собой веб-приложения.

С другой стороны, ошибка 400 Bad Request означает, что запрос, присланный клиентом, был неверным по той или иной причине. Пользовательский клиент может попытаться загрузить слишком большой файл, запрос может быть неверно сформирован, заголовки HTTP запроса могут быть неверными и так далее.

Мы рассмотрим некоторые из этих сценариев (и потенциальные решения) ниже. Но имейте в виду: мы не можем однозначно исключить ни клиент, ни сервер в качестве источника проблемы. В этих случаях сервер является сетевым объектом, генерирующим ошибку 400 Bad Request и возвращающим её как код ответа HTTP клиенту, но возможно именно клиент ответственен за возникновение проблемы.

Важно сделать полный бэкап вашего приложения, базы данных и т.п. прежде, чем вносить какие-либо правки или изменения в систему. Ещё лучше, если есть возможность создать полную копию приложения на дополнительном промежуточном сервере, который недоступен публично.

Подобный подход обеспечит чистую тестовую площадку, на которой можно отрабатывать все возможные сценарии и потенциальные изменения, чтобы исправить или иную проблему без угрозы безопасности или целостности вашего «живого» приложения.

Ошибка 400 Bad Request означает, что сервер (удалённый компьютер) не может обработать запрос, отправленный клиентом (браузером), вследствие проблемы, которая трактуется сервером как проблема на стороне клиента.

Существует множество сценариев, в которых ошибка 400 Bad Request может появляться в приложении. Ниже представлены некоторые наиболее вероятные случаи:

  • Клиент случайно (или намеренно) отправляет информацию, перехватываемую маршрутизатором ложных запросов. Некоторые веб-приложения ищут особые заголовки HTTP, чтобы обрабатывать запросы и удостовериться в том, что клиент не предпринимает ничего зловредного. Если ожидаемый заголовок HTTP не найден или неверен, то ошибка 400 Bad Request – возможный результат.
  • Клиент может загружать слишком большой файл. Большинство серверов или приложений имеют лимит на размер загружаемого файла, Это предотвращает засорение канала и других ресурсов сервера. Во многих случаях сервер выдаст ошибку 400 Bad Request, когда файл слишком большой и поэтому запрос не может быть выполнен.
  • Клиент запрашивает неверный URL. Если клиент посылает запрос к неверному URL (неверно составленному), это может привести к возникновению ошибки 400 Bad Request.
  • Клиент использует недействительные или устаревшие куки. Это возможно, так как локальные куки в браузере являются идентификатором сессии. Если токен конкретной сессии совпадает с токеном запроса от другого клиента, то сервер/приложение может интерпретировать это как злонамеренный акт и выдать код ошибки 400 Bad Request.

Устранение ошибки 400 Bad Request (попробуйте позже) лучше начать с исправления на стороне клиента. Вот несколько советов, что следует попробовать в браузере или на устройстве, которые выдают ошибку.

Наиболее частой причиной ошибки 400 Bad Request является банальный ввод некорректного URL. Доменные имена (например, internet-technologies.ru) нечувствительны к регистру, поэтому ссылка, написанная в смешанном регистре, такая как interNET-technologies.RU работает так же, как и нормальная версия в нижнем регистре internet-technologies.ru. Но части URL, которые расположены после доменного имени, чувствительными к регистру. Кроме случаев, когда приложение/сервер специально осуществляет предварительную обработку всех URL и переводит их в нижний регистр перед исполнением запроса.

Важно проверять URL на неподходящие специальные символы, которых в нем не должно быть. Если сервер получает некорректный URL, он выдаст ответ в виде ошибки 400 Bad Request.

Одной из потенциальных причин возникновения ошибки 400 Bad Request являются некорректные или дублирующие локальные куки. Файлы куки в HTTP – это небольшие фрагменты данных, хранящиеся на локальном устройстве, которые используются сайтами и веб-приложениями для «запоминания» конкретного браузера или устройства. Большинство современных веб-приложений использует куки для хранения данных, специфичных для браузера или пользователя, идентифицируя клиента и позволяя делать следующие визиты быстрее и проще.

Но куки, хранящие информацию сессии о вашем аккаунте или устройстве, могут конфликтовать с другим токеном сессии от другого пользователя, выдавая кому-то из вас (или вам обоим) ошибку 400 Bad Request.

В большинстве случаев достаточно рассматривать только ваше приложение в отношении файлов куки, которые относятся к сайту или веб-приложению, выдающему ошибку 400 Bad Request.

Куки хранятся по принципу доменного имени веб-приложения, поэтому можно удалить только те куки, которые соответствуют домену сайта, сохранив остальные куки не тронутыми. Но если вы не знакомы с ручным удалением определённых файлов куки, гораздо проще и безопаснее очистить сразу все файлы куки.

Это можно сделать разными способами в зависимости от браузера, который вы используете:

  • Google Chrome;
  • Internet Explorer;
  • Microsoft Edge;
  • Mozilla Firefox;
  • Safari.

Если вы получаете ошибку 400 Bad Request при загрузке какого-либо файла, попробуйте корректность работы на меньшем по размеру файле, Это включает в себя и «загрузки» файлов, которые не загружаются с вашего локального компьютера. Даже файлы, отправленные с других компьютеров, считаются «загрузками» с точки зрения веб-сервера, на котором работает ваше приложение.

Попробуйте выйти из системы и войти обратно. Если вы недавно очистили файлы куки в браузере, это приводит к автоматическому выходу из системы при следующей загрузке страницы. Попробуйте просто войти обратно, чтобы посмотреть, заработала ли система корректно.

Также приложение может столкнуться с проблемой, связанной с вашей предыдущей сессией, являющейся лишь строкой, которую сервер посылает клиенту, чтобы идентифицировать клиента при будущих запросах. Как и в случае с другими данными, токен сессии (или строка сессии) хранится локально на вашем устройстве в файлах куки и передаётся клиентом на сервер при каждом запросе. Если сервер решает, что токен сессии некорректен или скомпрометирован, вы можете получить ошибку 400 Bad Request.

В большинстве веб-приложений выход повторный вход приводит к перегенерации локального токена сессии.

Если вы используете на сервере распространённые пакеты программ, которые выдают ошибку 400 Bad Request, изучите стабильность и функциональность этих платформ. Наиболее распространённые системы управления контентом, такие как WordPress, Joomla! и Drupal, хорошо протестированы в своих базовых версиях. Но как только вы начинаете изменять используемые ими расширения PHP, очень легко спровоцировать непредвиденные проблемы, которые выльются в ошибку 400 Bad Request.

Если вы обновили систему управления контентом непосредственно перед появлением ошибки 400 Bad Request, рассмотрите возможность отката к предыдущей версии, которая была установлена, как самый быстрый и простой способ убрать ошибку 400 bad request.

Аналогично, любые расширения или модули, которые были обновлены, могут вызывать ошибки на стороне сервера, поэтому откат к предыдущим версиям этих расширений также может помочь.

Но в некоторых случаях CMS не предоставляют возможности отката к предыдущим версиям. Так обычно происходит с популярными платформами, поэтому не бойтесь, если вы не можете найти простой способ вернуться к использованию старой версии той или иной программной платформы.

В зависимости от конкретной CMS, которую использует приложение, имена этих компонентов будут различаться. Но во всех системах они служат одной и той же цели: улучшение возможностей платформы относительно её стандартной функциональности.

При этом имейте в виду, что расширения могут так или иначе получать полный контроль над системой, вносить изменения в код PHP, HTML, CSS, JavaScript или базу данных. Поэтому мудрым решением может быть удаление любых новых расширений, которые были недавно добавлены.

Даже если удалили расширение через панель управления CMS, это не гарантирует, что внесенные им изменения были полностью отменены. Это касается многих расширений WordPress, которым предоставляется полный доступ к базе данных.

Расширение может изменить записи в базе данных, которые «не принадлежат» ему, а созданы и управляются другими расширениями (или даже самой CMS). В подобных случаях модуль может не знать, как откатить назад изменения, внесенные в записи базы данных.

Я лично сталкивался с такими случаями несколько раз. Поэтому лучшим путём будет открыть базу данных и вручную просмотреть таблицы и записи, которые могли быть изменены расширением.

Если вы уверены, что ошибка 400 Bad Request не связана с CMS, вот некоторые дополнительные советы, которые могут помочь найти проблему на стороне сервера.

Ошибка, которую вы получаете от приложения, является результатом недостающих или некорректных специальных заголовков HTTP, которые ожидает получить приложение или сервер. В подобных случаях нужно проанализировать заголовки HTTP, которые отправляются на сторону сервера.

Почти любое веб-приложение будет вести логи на стороне сервера. Они представляют собой историю того, что делало приложение. Например, какие страницы были запрошены, к каким серверам оно обращалось, какие результаты предоставлялись из базы данных и т.п.

Логи сервера относятся к оборудованию, на котором выполняется приложение, и зачастую представляют собой детали о статусе подключённых сервисов или даже о самом сервере. Поищите в интернете “логи [ИМЯ_ПЛАТФОРМЫ]”, если вы используете CMS, или “логи [ЯЗЫК_ПРОГРАММИРОВАНИЯ]” и “логи [ОПЕРАЦИОННАЯ_СИСТЕМА]”, если у вас собственное приложение, чтобы получить подробную информацию по поиску логов.

Если это не помогло, проблема может быть в исходном коде, который выполняется внутри приложения. Попытайтесь диагностировать, откуда может исходить проблема, отлаживая приложение вручную и параллельно просматривая логи приложения и сервера.

Создайте копию всего приложения на локальном устройстве для разработки и пошагово повторите тот сценарий, который приводил к возникновению ошибки 400 Bad Request. А затем просмотрите код приложения в тот момент, когда что-то пойдёт не так.

Независимо от причины возникновения ошибки, даже если вам удалось исправить её в этот раз, появление в вашем приложении такой проблемы — это сигнал для того, чтобы внедрить инструмент обработки ошибок, который поможет автоматически обнаруживать их и оповещать в момент возникновения.

Приветствую вас на нашем супер-пупер-классном портале WiFiGid! В этой статье мы рассмотрим очень близкую тему для нас и очень неприятную ошибку для вас – ошибка 400 Bad Request. После прочтения этой короткой заметки в простом формате вы точно сможете или побороть эту ошибку, или просто смиритесь с ней. Начинаем?

Содержание

  1. Что это за ошибка 400?
  2. Основные причины ошибки 400
  3. Шаг 0 – Перезагрузка
  4. Шаг 1 – Неправильная ссылка
  5. Шаг 2 – Чистим Cookie и кэш
  6. Шаг 3 – Антивирусы и брандмауэры
  7. Шаг 4 – Драйвера сетевых устройств
  8. Шаг 5 – При загрузке файла
  9. Шаг 6 – Провайдер
  10. Вебмастерам и прочим коллегам
  11. Видео по теме
  12. Задать вопрос автору статьи

Ошибка 400 Bad Request: исправляем на корню

Сама ошибка может иметь разные названия в зависимости от ее места проявления:

  • 400 Bad Request
  • Request failed with status code 400
  • HTTP Status 400 bad request
  • Statuscode 400 Error Bad Request
  • Bad request Please reload the page

Список может быть спокойно расширен, но главное тут одно – 400.

И для справки: «Bad Request» в переводе с английского на русский – «плохой запрос», т.е. что-то пошло не так с вашим запросом к их сайту или серверу.

Когда вы открываете какой-то сайт, его сервер (не ваш компьютер, не ваш провайдер, а именно его сервер) отправляет вам статус в виде какой-то цифры. Как правило это цифра 200 – вы ее не видите, т.к. она означает, что все хорошо, и сайт был загружен. Запомнили – статус равен какой-то цифре.

Теперь будет очень краткое изложение статусов (разобью их сначала по классам):

  • 2xx – Скорее всего все хорошо, сайт загружен, этот статус вы не видите.
  • 3xx – Обычно сайт куда-то переехал, а ваш браузер не показывает этот статус и сразу переходит на новый сайт в месте «переезда».
  • 4xx – Что-то не так с вашим запросом. Обычно, мы получаем статус 404 «Страница не найдена», когда обращаемся к несуществующей странице сайта. Ключевой момент здесь – сам сайт отработал ваш запрос, но не знает, что с ним делать и выдает этот статус. К подробному рассмотрению статуса 400 мы вернемся чуть ниже.
  • 5xx – Сайт вообще не смог отработать ваш запрос, и поэтому сервер просто решил выдать ошибку от беспомощности.

Суть всего вышеизложенного – наша ошибка возникла из-за запроса, обычно она не критична, проявляется именно во время обработки сайта, можно попробовать что-то сделать.

Основные причины ошибки 400

Пробегусь по основным причинам, а способы их решения рассмотрим ниже:

  1. Неправильная ссылка.
  2. Старые файлы Cookie.
  3. Загрузка большого файла.
  4. Блокировка антивирусом или брандмауэром сайта. Сюда же относим возможную заразу (вирусы) на компьютере, которая сама обрабатывает запросы.
  5. Проблемы на стороне сайта.
  6. Проблемы на стороне вашего интернет-провайдера.

Вроде бы разложил все варианты по вероятности их проявления, теперь можно пробежаться по ним уже с деталями.

Шаг 0 – Перезагрузка

Все верно, просто на этом шаге перезагружаем ваш компьютер или телефон и пробуем заново. Очень часто такое просто действие помогает. А еще для дальнейшей диагностики здорово помогает другое устройство – попробуйте сделать то же самое на другом компьютере/телефоне. Если проявляется ошибка в обоих случаях, то проблема точно не у вас :)

Шаг 1 – Неправильная ссылка

А вы точно переходите по правильной ссылке? Есть просто вероятность, что вам дали неверную ссылку, поэтому ничего и не открывается. Как простое решение – зайти на главную страницу вашего сайта (если мы открываем сайт) и попробовать найти нужную страницу оттуда – например, если администраторы сайта просто удалили ту страницу, а переадресацию на правильную не поставили.

Если же вы пользуетесь какими-то сервисами или приложениями, то тут два варианта – или ждать обновления приложения, или попытаться изменить свой запрос (если есть возможность, конечно). Я сталкивался с Bad Request в приложении «Сбер Спасибо» – просто по нужному баннеру не открывалась моя история начислений. Просто подождал, а на следующий день уже все заработало – тоже как вариант решения.

И еще раз – иногда проще всего поискать правильную ссылку или же подождать некоторое время. Остальные шаги могут быть лишними.

Шаг 2 – Чистим Cookie и кэш

Cookie и кэш браузера, если вы работаете с сайтом, а также кэш приложения (в случае с приложениями) тоже участвуют в запросе. И они могут вполне себе вызвать «неверный запрос» (т.е. скорее всего как устаревший). Поэтому как профилактика:

  • Чистим куки браузера (на примере Яндекс Браузера)
  • Чистим кэш браузера (на примере Оперы)

Если используете приложение – можно почистить его кэш через настройки приложений (тут уже смотреть по вашей модели телефона), а еще настоятельно рекомендую обновить ваше приложение, если для него доступны обновления.

Еще в системе есть кэш DNS, который тоже можно для профилактики сбросить:

  • Инструкция по сбросу кэша DNS

Шаг 3 – Антивирусы и брандмауэры

Тут все сводится к следующим проверкам:

  1. Временно отключаем свой антивирус. Некоторые антивирусы иногда блокируют какие-то запросы к сайтам, а в итоге первичное приложение или сайт не могут загрузиться полностью и вызывают ошибку. Но помним, что на некоторые сайты все-таки без антивируса лучше не заходить.
  2. Если вы настраивали свой брандмауэр для какой-то задачи, тоже можно его временно отключить. Мало ли как-то ограничили ваш сайт.
  3. Просто прогоните свою систему антивирусом. Быть может завелся какой-то зловред, который тоже блокирует часть запросов. А еще в этой сфере очень часто происходит подмена DNS, если знаете как – проверьте свои DNS через настройки сетевых адаптеров и трассировкой маршрута, а то вдруг на вашем пути к сайту появился какой-то нехороший узел, который и мешает получить правильный ответ.

Шаг 4 – Драйвера сетевых устройств

Особенно проявляется после обновления системы – новая система не может работать на старых драйверах с той же сетевой картой, и как итог получаем ошибки. Здесь просто рекомендую по возможности в профилактических целях произвести обновление всех драйверов в системе.

Шаг 5 – При загрузке файла

Если ошибка появляется при загрузке любого файла (документ, видео, фото) – есть вариант, что ваш файл просто превышает максимальный размер, который заложен на сервере. Решение – уменьшаем размер файла. До какого размера, сказать не могу – пробуем методом «тыка».

Шаг 6 – Провайдер

Если совсем ничего не помогает, и все сайты подряд выдают ошибку 400, есть вероятность, что в деле виновен провайдер. Это бывает очень редко, поэтому применяем в крайних случаях:

  • Перезагружаем свой домашний роутер (откуда у вас интернет).
  • Если не помогает – звоним провайдеру и узнаем о наличии технических проблем на линии.

Вебмастерам и прочим коллегам

Если ваш сервер выдает эту ошибку – попробуйте сначала сами посмотреть свой сайт в режиме «Инкогнито». Если ошибка повторяется и все-таки возникает на вашем сервере – идем смотреть логи, кофейную гущу не применяем, вся истина скрыта где-то там. С радостью бы поподсказывал на эту тему в комментариях, но толку от этого не вижу – логи наверняка знают ответ лучше меня. Если совсем все будет плохо – пишите, договоримся, посмотрим. По долгу службы перелопатили уже тонны серверов на подобные проблемы.

Видео по теме

Интернет ― это сложная схема взаимодействия устройств. Между компьютером и сервером сайта легко могут появиться проблемы с сетью: код ошибки 400, 406, 410. В этой статье мы рассмотрим ошибку 400.

Что значит ошибка 400

Все ошибки, которые начинаются на 4, говорят о том, что проблема на стороне пользователя.

Ошибка 400 bad request переводится как «плохой запрос». Она возникает тогда, когда браузер пользователя отправляет некорректный запрос серверу, на котором находится сайт.

Чаще всего проблема действительно обнаруживается на стороне пользователя, но бывают и исключения, когда проблема на стороне провайдера или владельца сайта.

Причины появления ошибки 400

  1. Ссылка на страницу была некорректной. Если в ссылке была допущена опечатка, сайт, как правило, выдаёт ошибку 404: «Страница не найдена». Опечатку в запросе может сделать сам пользователь, который вводит URL-адрес вручную, а также владелец сайта, который размещает ссылку на странице.
  2. Используются устаревшие файлы cookies.
  3. Пользователь загружает на сайт слишком большой файл.
  4. Антивирус или брандмауэр блокирует сайт.
  5. На компьютере есть вирус, который блокирует доступ к сайту.
  6. Проблемы на стороне интернет-провайдера.

Как исправить ошибку 400

Перед тем как заниматься серьёзной настройкой устройства, проверьте правильность написания URL-адреса. Если ссылка была скопирована с сайта, попробуйте найти нужную страницу по ключевым словам. Как только вы найдёте правильную ссылку, сайт заработает.

Если причина не в этом, переходите к другим настройкам, которые описаны ниже.

Очистите файлы cookies и кэш браузера

Файлы куки и кэш созданы для того, чтобы запоминать сайты и персональные данные пользователя. За счёт этой памяти ускоряется процесс повторной загрузки страницы. Но cookies и кэш, которые хранят данные предыдущей сессии, могут конфликтовать с другим токеном сессии. Это приведёт к ошибке 400 Bad Request.

Очистите кэш браузера по инструкции и попробуйте зайти на страницу заново.

Очистить кэш и куки можно не только вручную, но и с помощью программ CCleaner и Advanced SystemCare.

CCleaner ― эффективное решение для оптимизации работы системы. За пару кликов можно очистить кэш и cookies в нескольких браузерах одновременно. Также можно быстро почистить все временные файлы, которые могут замедлять работу системы. Интуитивный интерфейс не требует специальных знаний:



Как решить ошибку 404 1

Ещё одним популярным приложением для оптимизации ПК является Advanced SystemCare. Эта программа поможет удалить ненужные файлы, очистить реестр, ускорить работу системы, освободить память и место на диске. Также она может контролировать безопасность просмотра веб-страниц, защищая конфиденциальные данные, блокируя вредоносные веб-сайты и предотвращая майнинг криптовалюты.

Очистите кэш DNS

DNS-кэш — это временная база данных вашего компьютера, которая хранит IP-адреса часто посещаемых веб-сайтов. Такая база данных ускоряет связь с сервером.

Вы можете изменить DNS, однако данные из кэша отправляют на старый IP-адрес. После очистки браузер начнёт обращаться к новому IP-адресу. Чаще всего проблема несоответствия DNS приводит к ошибке 502, но также может появиться ошибка 400.

В зависимости от вашей операционной системы очистите кэш по одной из инструкций.

  1. 1.

    Откройте командную строку. Для этого введите в поисковую строку «Командная строка» и выберите появившееся приложение:



    Как решить ошибку 404 2

  2. 2.

  3. 3.

    Дождитесь сообщения об очистке кэша:



    =932x270

  1. 1.

    Откройте терминал клавишами Ctrl+Alt+T.

  2. 2.

    Введите команду:

    Для Ubuntu:

    sudo service network-manager restart

    Для других дистрибутивов:

    sudo /etc/init.d/nscd restart
  1. 1.

    Войдите в терминал. Для этого нажмите клавиши Command + Space. Введите Терминал и нажмите на найденное приложение.

  2. 2.

    Введите команду:

    sudo killall -HUP mDNSResponder

Готово, вы очистили кэш DNS. Попробуйте заново зайти на сайт.

Измените настройки антивируса и брандмауэра

Нарушать соединение с сервером может брандмауэр или антивирус. Чтобы проверить, мешает ли соединению один из них, временно отключите ваш антивирус и брандмауэр. Если страница заработала, нужно менять настройки одного из них.


Как отключить брандмауэр на Windows 7/10

Брандмауэр ― межсетевой экран, стена, которая защищает компьютер от вторжений и от утечки информации в сеть. Многие антивирусы имеют межсетевой экран. В этом случае брандмауэр можно выключить, чтобы он не нарушал соединения с сайтами. Если в антивирусе нет межсетевого экрана, не отключайте брандмауэр без особой причины.

Чтобы отключить брандмауэр на Windows 7/10:

  1. 1.

    В левом нижнем углу экрана нажмите на иконку Лупы.

  2. 2.

    Перейдите во вкладку «Приложения» и выберите Панель управления:



    Как решить ошибку 404 4

  3. 3.

    Нажмите на Брандмауэр Защитника Windows:



    Как решить ошибку 404 5

  4. 4.

    В левом меню нажмите на Включение и отключение брандмауэра Защитника Windows:



    Как решить ошибку 404 6

  5. 5.

    В блоках «Параметры для частной сети» и «Параметры для общественной сети» отметьте пункт Отключить брандмауэр Защитника Windows. Нажмите OK:



    Как решить ошибку 404 7

Готово, вы отключили брандмауэр.

Проверка на вирусы

Вирусы на устройстве могут нарушать связь с сайтами. Отсканируйте систему антивирусной программой. Когда вирус будет найден, удалите его и перезагрузите устройство. Если вируса нет, попробуйте другой способ.

Обновите драйверы сетевых устройств

Устаревшее ПО на сетевых устройствах может генерировать неверные запросы. Установите новые драйверы для сетевого соединения.

Уменьшите размер файла

Несмотря на то что ошибки 4xx в основном вызваны проблемами на устройстве пользователя, бывают случаи, когда ошибка связана с сервером. 400 ошибка сервера возникает, когда пользователь загружает слишком большой файл на ресурс.

Создатели сайта иногда ставят ограничения на файлы, которые загружают пользователи, чтобы не занимать много места на своём сервере. Если у вас появляется ошибка 400 при загрузке файла, то, скорее всего, он больше, чем требует владелец веб-ресурса. Попробуйте уменьшить вес файла и загрузите его снова.

Проблема на стороне интернет-провайдера

Попробуйте загрузить другой веб-сайт. Если ошибка сохраняется, значит проблема может быть связана с нарушением работы сетевого оборудования. Чтобы её исправить попробуйте перезагрузить сетевое оборудование (модем, маршрутизатор) и само устройство.

Если и это не помогло, обратитесь к своему интернет-провайдеру. Максимально полно опишите проблему и действия, которые вы предпринимали. Опишите, какая у вас операционная система и браузер, используете ли брандмауэр и прокси-сервер, очистили ли вы кэш и куки, проверили ли устройство на вирусы.

Для владельца сайта

Если вы увидели, что ваш сайт выдаёт ошибку 400, проделайте все вышеперечисленные действия. Вполне возможно, что у ваших клиентов всё отображается правильно. Очень редко, но случается, что проблема всё-таки с сервером, на котором находится сайт. В этом случае обратитесь к хостинг-провайдеру, чтобы найти ошибку в настройках.

Понравилась статья? Поделить с друзьями:
  • Code 3003 subway surfers error
  • Code 26 error dust
  • Code 24 шевроле кобальт ошибка
  • Code 2004287473 8889000f как исправить
  • Code 10 error wifi