Title: Clarify that "url" parameter to HTTPConnection.request(method, url) is usually an absolute path · Issue #102327 · python/cpython · GitHub
Open Graph Title: Clarify that "url" parameter to HTTPConnection.request(method, url) is usually an absolute path · Issue #102327 · python/cpython
X Title: Clarify that "url" parameter to HTTPConnection.request(method, url) is usually an absolute path · Issue #102327 · python/cpython
Description: Documentation The current documentation for HTTPConnection.request(method, url) looks like: No description of the "url" parameter is provided besides its name. One might easily assume (as I did originally) that an absolute URL such as ht...
Open Graph Description: Documentation The current documentation for HTTPConnection.request(method, url) looks like: No description of the "url" parameter is provided besides its name. One might easily assume (as I did ori...
X Description: Documentation The current documentation for HTTPConnection.request(method, url) looks like: No description of the "url" parameter is provided besides its name. One might easily assume (as...
Opengraph URL: https://github.com/python/cpython/issues/102327
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Clarify that \"url\" parameter to HTTPConnection.request(method, url) is usually an absolute path","articleBody":"# Documentation\r\n\r\nThe current documentation for [HTTPConnection.request(method, url)](https://docs.python.org/3/library/http.client.html) looks like:\r\n\r\n---\r\n\r\n\u003cimg width=\"860\" alt=\"Screen Shot 2023-02-28 at 8 56 01 AM\" src=\"https://user-images.githubusercontent.com/764688/221875289-e99ac2ff-8b2d-4181-a79a-fa4a802cd2a4.png\"\u003e\r\n\r\n---\r\n\r\nNo description of the \"url\" parameter is provided besides its name. One might easily assume (as I did originally) that an absolute URL such as `https://xkcd.com` was expected here.\r\n\r\nHowever if you look at how the request() method is implemented, you'll notice that it creates an HTTP request line using the `method` and `url` parameters verbatim:\r\n\r\n* For example: `HTTPConnection.request(\"GET\", \"/\")` will create an HTTP request beginning with `GET / HTTP/1.1`.\r\n* And `HTTPConnection.request(\"GET\", \"https://xkcd.com\")` will create an HTTP request beginning with `GET https://xkcd.com HTTP/1.1`.\r\n\r\nAccording to [RFC 2616 §5.1.2](https://www.rfc-editor.org/rfc/rfc2616#section-5.1.2), (1) the \"url\" in the above examples must be an absolute path (like `/`) and (2) the \"Host\" header must be provided.\r\n\r\nI recently discovered that a website downloader program of mine was [generating improper HTTP requests that were confusing WordPress sites](https://github.com/davidfstr/Crystal-Web-Archiver/commit/dd3981c73ba831cc6ca32f018b871bc33aac1748) because I was incorrectly passing an absolute URL as the \"url\" parameter to request() rather than passing an absolute path.\r\n\r\n**I think it would be worth extending the documentation to explain the above constraints on the \"url\" parameter (and the requirement of the \"Host\" header), so that it is easier to use the request() method correctly to generate a well-formed HTTP request.** \r\n\r\nI already have a PR proposing specific changes, which I will post shortly.\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-102328\n* gh-104339\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/davidfstr","@type":"Person","name":"davidfstr"},"datePublished":"2023-02-28T14:11:10.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/102327/cpython/issues/102327"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:6a42a3ce-dc93-fc6e-3c92-23a783d2e080 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9F0A:27157C:F7726A:149BB49:6969925B |
| html-safe-nonce | d88509bfffc817fd80ba26a17a8508fabc7eb5044d9dcd1f253c6e194a6ad3ad |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5RjBBOjI3MTU3QzpGNzcyNkE6MTQ5QkI0OTo2OTY5OTI1QiIsInZpc2l0b3JfaWQiOiI4MzYyOTM3Nzg1Mzk5MjE4Nzc5IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | f9f5ac4666d88818d566805afe48c974963b5b010578dd8733cbebdb58bb5862 |
| hovercard-subject-tag | issue:1603149916 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/102327/issue_layout |
| twitter:image | https://opengraph.githubassets.com/d226d888b364ee9dcfeba77f4c4c01bf4f19a87d113291ca1c68d2a002012532/python/cpython/issues/102327 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d226d888b364ee9dcfeba77f4c4c01bf4f19a87d113291ca1c68d2a002012532/python/cpython/issues/102327 |
| og:image:alt | Documentation The current documentation for HTTPConnection.request(method, url) looks like: No description of the "url" parameter is provided besides its name. One might easily assume (as I did ori... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | davidfstr |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3542e147982176a7ebaa23dfb559c8af16f721c03ec560c68c56b64a0f35e751 |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | af80af7cc9e3de9c336f18b208a600950a3c187c |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width