[英]Python-Django [SSL: WRONG_VERSION_NUMBER] Error
While I'm trying to connect to my localhost, I get [SSL: WRONG_VERSION_NUMBER] error. 在尝试连接到本地主机时,出现[SSL:WRONG_VERSION_NUMBER]错误。 I'm using '8080' port by default. 我默认使用“ 8080”端口。 Previously, I was getting ProxyError, then I changed my url from 'http' to 'https' and now I get SSLError. 以前,我收到了ProxyError,然后将URL从“ http”更改为“ https”,现在得到了SSLError。 I've checked some solutions, which prompts to change the port number. 我已经检查了一些解决方案,提示您更改端口号。 Does it have to do anything with the port number, or something else? 它与端口号有关系吗?
views.py: views.py:
endpoint = 'https://****:8080/MyApp/services/DBConnection/callLoginProcedure'
def index(request):
post = request.POST
if request.POST.get('login_button'):
qd = QueryDict(mutable=True)
qd.update(
inputPhoneNumber=request.POST.get('phone_num'),
inputPassword=request.POST.get('password')
)
response = requests.post('{}?{}'.format(endpoint, qd.urlencode()), verify=False)
result = response.json()
messages.info(request, result)
return render(request, 'login/index.html')
The error is as follows 错误如下
stacktrace: 堆栈跟踪:
Django Version: 2.2.3
Python Version: 3.7.3
Installed Applications:
['login',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware']
Traceback:
File "C:\Program Files\Python37\lib\site-packages\urllib3\connectionpool.py" in urlopen
603. chunked=chunked)
File "C:\Program Files\Python37\lib\site-packages\urllib3\connectionpool.py" in _make_request
344. self._validate_conn(conn)
File "C:\Program Files\Python37\lib\site-packages\urllib3\connectionpool.py" in _validate_conn
843. conn.connect()
File "C:\Program Files\Python37\lib\site-packages\urllib3\connection.py" in connect
370. ssl_context=context)
File "C:\Program Files\Python37\lib\site-packages\urllib3\util\ssl_.py" in ssl_wrap_socket
368. return context.wrap_socket(sock)
File "C:\Program Files\Python37\lib\ssl.py" in wrap_socket
412. session=session
File "C:\Program Files\Python37\lib\ssl.py" in _create
853. self.do_handshake()
File "C:\Program Files\Python37\lib\ssl.py" in do_handshake
1117. self._sslobj.do_handshake()
During handling of the above exception ([SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)), another exception occurred:
File "C:\Program Files\Python37\lib\site-packages\requests\adapters.py" in send
449. timeout=timeout
File "C:\Program Files\Python37\lib\site-packages\urllib3\connectionpool.py" in urlopen
641. _stacktrace=sys.exc_info()[2])
File "C:\Program Files\Python37\lib\site-packages\urllib3\util\retry.py" in increment
399. raise MaxRetryError(_pool, url, error or ResponseError(cause))
During handling of the above exception (HTTPSConnectionPool(****): Max retries exceeded with url: /MyApp/services/DBConnection/callLoginProcedure?inputPhoneNumber=231412&inputPassword=4211 (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)')))), another exception occurred:
File "C:\Program Files\Python37\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Program Files\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Program Files\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\TOLGA\Desktop\PythonWebProjects\WebLogin\login\views.py" in index
53. response = requests.post('{}?{}'.format(endpoint, qd.urlencode()), verify=False)
File "C:\Program Files\Python37\lib\site-packages\requests\api.py" in post
116. return request('post', url, data=data, json=json, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\requests\api.py" in request
60. return session.request(method=method, url=url, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py" in request
533. resp = self.send(prep, **send_kwargs)
File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py" in send
646. r = adapter.send(request, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\requests\adapters.py" in send
514. raise SSLError(e, request=request)
Exception Type: SSLError at /login/
Exception Value: HTTPSConnectionPool(***) (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)')))
endpoint = 'https://****:8080/MyApp/services/DBConnection/callLoginProcedure'
From the your edits in your previous question the original URL can be retrieved. 从上一个问题的编辑中,可以检索原始URL。 When trying this it is clear that the endpoint you are trying to access only supports HTTP on the given port 8080 and not HTTPS as you are trying to use. 尝试此操作时,很明显,您尝试访问的端点仅在给定的端口8080上支持HTTP,而在尝试使用的端口上不支持HTTPS。
[SSL: WRONG_VERSION_NUMBER] Error [SSL:WRONG_VERSION_NUMBER]错误
The error you see stems from the attempt to access a site with HTTPS which only can do HTTP. 您看到的错误是由于尝试使用只能执行HTTP的HTTPS访问站点而引起的。 Your clients starts a TLS handshake by sending a ClientHello and expects the server to reply with a ServerHello. 您的客户端通过发送ClientHello启动TLS握手,并希望服务器以ServerHello进行回复。 Only, the server sends a plain HTTP response. 服务器仅发送纯HTTP响应。 The client then tries to interpret this response as TLS ServerHello which includes figuring out the TLS protocol version from some bytes at a specific position in the response. 然后,客户端尝试将此响应解释为TLS ServerHello,其中包括从响应中特定位置的某些字节中确定TLS协议版本。 Since this is no TLS response is expected the information there make no sense when interpreted as TLS which results in this strange error message. 由于这不是TLS响应,因此将其解释为TLS时,该信息没有意义,这会导致出现此奇怪的错误消息。
The proper way is to access the URL by HTTP not HTTPS. 正确的方法是通过HTTP而不是HTTPS访问URL。 If you get problems there (you mention some ProxyError without details) then you need to fix these problems and not just attempt to access the site by HTTPS - which as you see only causes other problems. 如果在那里遇到问题(您提到了一些ProxyError,但没有详细信息),那么您需要解决这些问题,而不仅仅是尝试通过HTTPS访问该网站-如您所见,这只会导致其他问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.