Comments (4)
I considered this originally, but TBH haven't used cookiejars enough to know what the most common/simplest method is.
Without investigating, my thought it it would be simple to roll out support for both at the same time.
Can you give me an example of how you'd pass in cookies by themselves and how that'd be useful? It would be much appreciated.
from requests.
I think @mcilrain might have been proposing something along the lines of...
requests.get('http://google.com', cookies={'cookie': 'value'})
I'll venture a guess that he was not aware that requests saves cookies it receives and attaches them to subsequent requests, though, which (besides being really awesome) complicates things because cookies set in this way would lack traits like expiry and domain.
It's entirely possible to create cookies programatically as it is, however it's... uh... a bit tedius:
from cookielib import CookieJar, Cookie
cookie = Cookie(
version=0,
name='Name',
value='1',
port=None,
port_specified=False,
domain='www.example.com',
domain_specified=False,
domain_initial_dot=False,
path='/',
path_specified=True,
secure=False,
expires=None,
discard=True,
comment=None,
comment_url=None,
rest={'HttpOnly': None},
rfc2109=False
)
cookie_jar = CookieJar()
cookie_jar.set_cookie(cookie)
requests.get('http://google.com', cookies=cookie_jar)
I didn't specify 17 arguments to Cookie
for fun, by the way; they're all required. It's pretty clear (and documented, too) that developers are not expected to construct their own cookies.
I can see how being able to do that might be really useful, though.
from requests.
Cookie.SimpleCookie()
makes this easier.
import Cookie, cookielib, requests
# create cookiejar
cj = cookielib.CookieJar()
# create cookie
ck = Cookie.SimpleCookie()
ck.name = 'value'
ck.expires = 0
ck.path = '/'
ck.domain = 'www.example.com'
# add cookie to cookiejar
cj.set_cookie(ck)
# use cookiejar to make request
response = requests.get('http://www.example.com/home.php', cookies=cj)
from requests.
So why not to make support both for this (dict-like)
requests.get('http://google.com', cookies={'cookie': 'value'})
and CookieJar way?
It's really useful when you need to pass cookies directly, for example PHPSESSID cookie. Yes, you can do a few more requests to login into a website and automatically set cookies, but this is too much work for that.
from requests.
Related Issues (20)
- Requests post not working with long processing time. HOT 1
- Possible regression with how MaxRetryError is handled HOT 2
- Improper URL serialization of boolean GET parameters HOT 2
- Weird behaviour with https and proxy authentication HOT 4
- "Recommended Packages and Extensions" page asyncio recommendations are outdated
- Status Code 425 named incorrectly HOT 4
- (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 400 Bad Request'))) HOT 1
- The Content-Length header for string `data` counts Unicode characters in the string when it should count encoded bytes HOT 6
- Cannot run tests locally HOT 2
- Failed to establish a new connection: [Errno -2] Name or service not known HOT 1
- Local (and build) tests failing HOT 2
- Is it possible to send async generator as `data` argument of request method? HOT 1
- affected urllib3 and certifi packages (older version keeping in setup.py file) HOT 1
- Since migration of urllib3 to 2.x data-strings with umlauts in a post request are truncated HOT 1
- the first response history url is incorrect HOT 1
- Links at docs site return 404 HOT 3
- I don't think the name of this function is appropriate, because the return value of this function is a ConnectionPool object, and the first sentence of the comment is also wrong, which makes it a huge difficulty for me to read!! HOT 2
- Unexpected `UnicodeError` on some URL HOT 2
- python requests.get() stuck HOT 1
- How to use multiple redundant hosts HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from requests.