ฉันกำลังพยายามค้นหารหัสสถานะที่หน้าเว็บของฉันส่งคืน ซึ่งแน่นอนที่สุดคือ 301 (ย้ายอย่างถาวร) ตามขดบนระบบย่อย Linux แต่การใช้ curl หรือวัตถุ WebRequest บน PowerShell จะส่งกลับ 200 (ตกลง)
ทำไมเป็นเช่นนี้?
ฉันกำลังพยายามค้นหารหัสสถานะที่หน้าเว็บของฉันส่งคืน ซึ่งแน่นอนที่สุดคือ 301 (ย้ายอย่างถาวร) ตามขดบนระบบย่อย Linux แต่การใช้ curl หรือวัตถุ WebRequest บน PowerShell จะส่งกลับ 200 (ตกลง)
ทำไมเป็นเช่นนี้?
เป็นเพราะ .NET และ PowerShell ติดตามการเปลี่ยนเส้นทางตามค่าเริ่มต้น แต่ curl ไม่ทำเช่นนี้ ค่าเริ่มต้นของ HttpWebRequest.AllowAutoRedirect
เป็นจริง และค่าเริ่มต้น MaximumRedirection ของ Intake-WebRequest คือ 5
หากต้องการปิดการเปลี่ยนเส้นทางอัตโนมัติผ่าน WebRequest:
$request = [System.Net.WebRequest]::Create("http://google.com")
$request.AllowAutoRedirect = $false
$request.GetResponse()
หรือ Involve-WebRequest cmdlet:
Invoke-WebRequest -Uri "http://google.com" -MaximumRedirection 0
หรือใช้แฟล็ก -L เพื่อติดตามการเปลี่ยนเส้นทางใน curl:
curl -L google.com
-MaximumRedirection 0
ทำให้เกิดข้อผิดพลาด เพิ่ม -ErrorAction Ignore
เพื่อดูการตอบกลับจริงๆ
- person Dan; 07.05.2018
-MaximumRedirection 0
จะแสดงการตอบสนองการเปลี่ยนเส้นทางรวมถึงข้อความเกินจำนวนการเปลี่ยนเส้นทางสูงสุดแล้ว
- person Dan; 19.12.2018
Invoke-WebRequest http://minnesota.publicradio.org/tools/podcasts/song_of_the_day.xml -MaximumRedirection 8 -Verbose
ไม่เปลี่ยนเส้นทางให้ฉันเหมือนที่ curl -vL http://minnesota.publicradio.org/tools/podcasts/song_of_the_day.xml
ทำ
- person brianary; 03.01.2021