René's URL Explorer Experiment


Title: WebRequestPSCmdlet does not check existence of Location header when Authorization is present · Issue #6543 · PowerShell/PowerShell · GitHub

Open Graph Title: WebRequestPSCmdlet does not check existence of Location header when Authorization is present · Issue #6543 · PowerShell/PowerShell

X Title: WebRequestPSCmdlet does not check existence of Location header when Authorization is present · Issue #6543 · PowerShell/PowerShell

Description: The code introduced in #3885 seems to have introduced a regression bug which was quite hard to identify as the error message points to issues with the URI and not to anything related to redirection. The code introduced in the pull reques...

Open Graph Description: The code introduced in #3885 seems to have introduced a regression bug which was quite hard to identify as the error message points to issues with the URI and not to anything related to redirection...

X Description: The code introduced in #3885 seems to have introduced a regression bug which was quite hard to identify as the error message points to issues with the URI and not to anything related to redirection...

Opengraph URL: https://github.com/PowerShell/PowerShell/issues/6543

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"WebRequestPSCmdlet does not check existence of Location header when Authorization is present","articleBody":"The code introduced in https://github.com/PowerShell/PowerShell/pull/3885 seems to have introduced a regression bug which was quite hard to identify as the error message points to issues with the URI and not to anything related to redirection. [The code introduced in the pull request initializes an URI using the Location Header, without first checking if the Location Header is present in the response of a redirect.](https://github.com/PowerShell/PowerShell/blob/d20d53eaacafd4645ea668bd46e62093d3f3e503/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs#L1310). The [HTTP RFC 7231](https://tools.ietf.org/html/rfc7231#section-6.4) does not specify the Location Header to be mandatory and thus it's existence must be checked.\r\n\r\nI discovered this while checking strange PowerShell errors when issuing a GET or HEAD request against a AWS S3 Bucket while connecting to the wrong region. AWS S3 does respond with HTTP 301 but without a Location header.\r\n\r\nThe issue only occurs if the Server responds with a redirect HTTP Status Code 3XX and without the Location header and if the client has specified the Authorization Header in the initial request.\r\n\r\nThe issue can probably be fixed by modifying [line 1290](https://github.com/PowerShell/PowerShell/blob/d20d53eaacafd4645ea668bd46e62093d3f3e503/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs#L1290) to `if (stripAuthorization \u0026\u0026 IsRedirectCode(response.StatusCode) \u0026\u0026 response.Headers.Location)`.\r\n\r\nI'd be glad to create a pull request to fix this issue if my analyzis is correct and the proposed change is the correct way to fix the issue.\r\n\r\nActual behavior\r\n---------------\r\n\r\nThe following simple HEAD request demonstrates the unexpected error message:\r\n\r\n```powershell\r\nInvoke-WebRequest -Uri https://s3.amazonaws.com/test-301-redirection/ -Method HEAD -Headers @{Authorization=\"test\"}                       \r\nInvoke-WebRequest : Value cannot be null.\r\nParameter name: uri\r\nAt line:1 char:1\r\n+ Invoke-WebRequest -Uri https://s3.amazonaws.com/test-301-redirection/ ...\r\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n+ CategoryInfo          : NotSpecified: (:) [Invoke-WebRequest], ArgumentNullException\r\n+ FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand\r\n```\r\n\r\nExpected behavior\r\n-----------------\r\n\r\nThe response should be\r\n\r\n```powershell\r\nInvoke-WebRequest -Uri https://s3.amazonaws.com/test-301-redirection/ -Method HEAD -Headers @{Authorization=\"test\"}                                                          \r\nInvoke-WebRequest : Response status code does not indicate success: 301 (Moved Permanently).\r\nAt line:1 char:1\r\n+ Invoke-WebRequest -Uri https://s3.amazonaws.com/test-301-redirection/ ...\r\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n+ CategoryInfo          : InvalidOperation: (Method: HEAD, R...rShell/6.0.2\r\n}:HttpRequestMessage) [Invoke-WebRequest], HttpResponseException\r\n+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand\r\n```\r\n\r\nA workaround is, to specify the `PreserveAuthorizationOnRedirect` Parameter which will skip the section introduced in https://github.com/PowerShell/PowerShell/pull/3885 :\r\n\r\n```powershell\r\nInvoke-WebRequest -Uri https://s3.amazonaws.com/test-301-redirection/ -Method HEAD -Headers @{Authorization=\"test\"} -PreserveAuthorizationOnRedirect                                                                                                                                                                                             \r\nInvoke-WebRequest : Response status code does not indicate success: 301 (Moved Permanently).\r\nAt line:1 char:1\r\n+ Invoke-WebRequest -Uri https://s3.amazonaws.com/test-301-redirection/ ...\r\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n+ CategoryInfo          : InvalidOperation: (Method: HEAD, R...rShell/6.0.2\r\n}:HttpRequestMessage) [Invoke-WebRequest], HttpResponseException\r\n+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand\r\n```\r\n\r\nEnvironment data\r\n----------------\r\n\r\n```powershell\r\n$PSVersionTable                                                                                                                           \r\n\r\nName                           Value                                                                                                                                                                  \r\n----                           -----                                                                                                                                                                  \r\nPSVersion                      6.0.2                                                                                                                                                                  \r\nPSEdition                      Core                                                                                                                                                                   \r\nGitCommitId                    v6.0.2                                                                                                                                                                 \r\nOS                             Darwin 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64                                                          \r\nPlatform                       Unix                                                                                                                                                                   \r\nPSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                                \r\nPSRemotingProtocolVersion      2.3                                                                                                                                                                    \r\nSerializationVersion           1.1.0.1                                                                                                                                                                \r\nWSManStackVersion              3.0                                           \r\n```\r\n","author":{"url":"https://github.com/ffeldhaus","@type":"Person","name":"ffeldhaus"},"datePublished":"2018-04-02T17:29:18.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/6543/PowerShell/issues/6543"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:e589f216-53f0-f014-801e-185ff022806c
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id86B4:1702DA:1FAA180:2D8C670:6A565DF0
html-safe-nonce3ed1ea41af15bc3a7b144f7fcb6b4923dcf0a35233462072133b7507bb2ef224
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4NkI0OjE3MDJEQToxRkFBMTgwOjJEOEM2NzA6NkE1NjVERjAiLCJ2aXNpdG9yX2lkIjoiMzkwNDgyMzQ3NjYxNjU4NDY4OCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmace8cb379764e07eada45f9550cd4686bc0a28404ce32bcf8d6c204221412bdd90
hovercard-subject-tagissue:310548278
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/6543/issue_layout
twitter:imagehttps://opengraph.githubassets.com/3ad701d22e2b048d4b96e066c1e388837e4c81d3f25ecbad9181fe3509dda65f/PowerShell/PowerShell/issues/6543
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/3ad701d22e2b048d4b96e066c1e388837e4c81d3f25ecbad9181fe3509dda65f/PowerShell/PowerShell/issues/6543
og:image:altThe code introduced in #3885 seems to have introduced a regression bug which was quite hard to identify as the error message points to issues with the URI and not to anything related to redirection...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameffeldhaus
hostnamegithub.com
expected-hostnamegithub.com
None6a3afe34dff341ad10912db44becf282289d7f2af20576241738530fbb28de01
turbo-cache-controlno-preview
go-importgithub.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git
octolytics-dimension-user_id11524380
octolytics-dimension-user_loginPowerShell
octolytics-dimension-repository_id49609581
octolytics-dimension-repository_nwoPowerShell/PowerShell
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id49609581
octolytics-dimension-repository_network_root_nwoPowerShell/PowerShell
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releaseb71002134df95575e9f6c2945a64d454b0be181e
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/PowerShell/PowerShell/issues/6543#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FPowerShell%2FPowerShell%2Fissues%2F6543
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FPowerShell%2FPowerShell%2Fissues%2F6543
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=PowerShell%2FPowerShell
Reloadhttps://github.com/PowerShell/PowerShell/issues/6543
Reloadhttps://github.com/PowerShell/PowerShell/issues/6543
Reloadhttps://github.com/PowerShell/PowerShell/issues/6543
Please reload this pagehttps://github.com/PowerShell/PowerShell/issues/6543
PowerShell https://github.com/PowerShell
PowerShellhttps://github.com/PowerShell/PowerShell
Notifications https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Fork 8.4k https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Star 54.4k https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Code https://github.com/PowerShell/PowerShell
Issues 1.2k https://github.com/PowerShell/PowerShell/issues
Pull requests 287 https://github.com/PowerShell/PowerShell/pulls
Discussions https://github.com/PowerShell/PowerShell/discussions
Actions https://github.com/PowerShell/PowerShell/actions
Projects https://github.com/PowerShell/PowerShell/projects
Security and quality 3 https://github.com/PowerShell/PowerShell/security
Insights https://github.com/PowerShell/PowerShell/pulse
Code https://github.com/PowerShell/PowerShell
Issues https://github.com/PowerShell/PowerShell/issues
Pull requests https://github.com/PowerShell/PowerShell/pulls
Discussions https://github.com/PowerShell/PowerShell/discussions
Actions https://github.com/PowerShell/PowerShell/actions
Projects https://github.com/PowerShell/PowerShell/projects
Security and quality https://github.com/PowerShell/PowerShell/security
Insights https://github.com/PowerShell/PowerShell/pulse
#6560https://github.com/PowerShell/PowerShell/pull/6560
WebRequestPSCmdlet does not check existence of Location header when Authorization is presenthttps://github.com/PowerShell/PowerShell/issues/6543#top
#6560https://github.com/PowerShell/PowerShell/pull/6560
Issue-BugIssue has been identified as a bug in the producthttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Issue-Bug%22
Resolution-FixedThe issue is fixed.https://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Resolution-Fixed%22
WG-Cmdlets-Utilitycmdlets in the Microsoft.PowerShell.Utility modulehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22WG-Cmdlets-Utility%22
https://github.com/ffeldhaus
ffeldhaushttps://github.com/ffeldhaus
on Apr 2, 2018https://github.com/PowerShell/PowerShell/issues/6543#issue-310548278
#3885https://github.com/PowerShell/PowerShell/pull/3885
The code introduced in the pull request initializes an URI using the Location Header, without first checking if the Location Header is present in the response of a redirect.https://github.com/PowerShell/PowerShell/blob/d20d53eaacafd4645ea668bd46e62093d3f3e503/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs#L1310
HTTP RFC 7231https://tools.ietf.org/html/rfc7231#section-6.4
line 1290https://github.com/PowerShell/PowerShell/blob/d20d53eaacafd4645ea668bd46e62093d3f3e503/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs#L1290
#3885https://github.com/PowerShell/PowerShell/pull/3885
Issue-BugIssue has been identified as a bug in the producthttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Issue-Bug%22
Resolution-FixedThe issue is fixed.https://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Resolution-Fixed%22
WG-Cmdlets-Utilitycmdlets in the Microsoft.PowerShell.Utility modulehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22WG-Cmdlets-Utility%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.