Requests on pyth in 3 doesn't work the same as it does in python 2
See original GitHub issueI’m having a problem with making an OPTIONS
request. If I run the following code in python 2.7
with requests 2.7.0
it works fine and I get a 204
back. If I run it with python 3.8.5
I get a 403
:
import requests
from requests_toolbelt.utils import dump
def print_raw_http(response):
data = dump.dump_all(response, request_prefix=b'', response_prefix=b'')
print('\n' * 2 + data.decode('utf-8'))
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)',
}
session = requests.Session()
r = session.options('https://ocapi-app.arlo.com/api/auth', headers=headers)
print_raw_http(r)
r.raise_for_status()
$ python -V
Python 2.7.16
$ python3 -V
Python 3.8.5
$ pip freeze | grep requests
requests==2.7.0
$ pip3 freeze | grep requests
requests==2.7.0
python 2.7
:
$ python blah.py
OPTIONS /api/auth HTTP/1.1
Host: ocapi-app.arlo.com
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)
Content-Length: 0
HTTP/1.1 204 No Content
python 3.8.5
:
$ python3 blah.py
OPTIONS /api/auth HTTP/1.1
Host: ocapi-app.arlo.com
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 0
HTTP/1.1 403 Forbidden
Works fine with cURL too:
curl -vvvv -X OPTIONS "https://ocapi-app.arlo.com/api/auth" --output --http1.1 --no-alpn --no-npn -H "Host: ocapi-app.arlo.com" -H "Connection: keep-alive" -H "Accept-Encoding: gzip, deflate" -H "Accept: */*" -H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)" -H "Content-length: 0"
> OPTIONS /api/auth HTTP/1.1
> Host: ocapi-app.arlo.com
> Connection: keep-alive
> Accept-Encoding: gzip, deflate
> Accept: */*
> User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 NETGEAR/v1 (iOS Vuezone)
> Content-length: 0
>
< HTTP/1.1 204 No Content
Issue Analytics
- State:
- Created 2 years ago
- Comments:15 (5 by maintainers)
Top Results From Across the Web
Porting Python 2 Code to Python 3 — Python 3.11.1 ...
Once you have fully translated your code to be compatible with Python 3, you will want to make sure your code doesn't regress...
Read more >Requests Module not working with Python3 but works with ...
The problem is your http.py file, just rename it to something else. There is a http package and the underlying library ( urllib3...
Read more >Python Requests Tutorial - GeeksforGeeks
Why learn Python requests module? Requests is an Apache2 Licensed HTTP library, that allows to send HTTP/1.1 requests using Python. To play with ......
Read more >Null in Python: Understanding Python's NoneType Object
It works because your code will execute lines 2 and 3 every time it calls the function with the default parameter. Using None...
Read more >Python API Tutorial: Getting Started with APIs - Dataquest
API requests work in exactly the same way – you make a request to an API server for data, and it responds to...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Yes, I know how to use markdown. That was a copy/paste fail while doing this from my phone.
See here if you want a formatted version: https://github.com/psf/requests/issues/5801#issuecomment-828925212
@sethmlarson what are you saying? You guys made a change to
urllib3
and/orrequests
that caused this issue. Downgrading tourllib3
to1.24
fixes the issue. The thing you can do about it is, fix the regression…