Permalänk

statuskod 401 vid POST request

Jag försöker göra en inloggning till en webbplats genom en http request med metoden 'POST' men lyckas av någon anledning inte. Jag vill ha statuskod 302 men får just nu 401 'unauthorized'. Jag är helt säker på att användarnamnet och lösenordet är korrekt, samt att jag använder rätt metod, rätt content-type och skickar till rätt url. Vad kan va felet?

async function login (url) { let request = await fetch(url, { method: 'POST', credentials: 'include', headers: { 'Content-Type' : 'application/x-www-form-urlencoded' }, body: 'username=namn&password=pass&submit=login', }) return request }

Permalänk
Keeper of the Bamse

Funkar t.ex. 'curl -u namn:pass http://din-url.com'? Är det bara en basic auth i andra änden mao?

Visa signatur

i7 10770K, NH-D15. 16GB corsair. RTX 3080. 3TB nvme. Samsung G9. Fractal Torrent Compact. Corsair RM850.
Logitech G pro wireless mouse. Logitech TKL915 wireless. Logitech Pro X Wireless.
Macbook pro M1 (16GB, 512GB). HP Reverb G2.
www.bamseclockers.com

Permalänk
Skrivet av Printscreen:

Funkar t.ex. 'curl -u namn:pass http://din-url.com'? Är det bara en basic auth i andra änden mao?

Tack för att du skrev ett svar men jag listade ut att jag tydligen visst får en 302 redirect och att det är från den andra webbsidan som den första redirectar mig till som jag får 401 unauthorized. Så mitt problem blir nu ett helt annat problem:
Anledningen till att jag får felkod 401 är för att jag måste skicka med en cookie i headers till sidan som den första url:en redirectar till. Problemet är att cookien jag måste skicka med får jag i response headers när jag anropar den första url:en(otydligt jag vet). Så jag måste på något sätt skicka med cookien från 'set-cookie' i respons headers samtidigt som den första url:en redirectar till nästa webbsida. Vet du hur jag kan göra det?

Permalänk

Du hämtar ut cookien från responsen. Sen sätter du den cookien som en header i requesten.

Permalänk
Skrivet av NorgeMannen:

Du hämtar ut cookien från responsen. Sen sätter du den cookien som en header i requesten.

Jag vet inte om det är såhär du menar men jag testade att göra så och det funkade inte heller. Kan du skriva ett exempel på hur du menar?

async function login (url) { let request = await fetch(url, { method: 'POST', credentials: 'include', headers: { 'Content-Type' : 'application/x-www-form-urlencoded', }, body: 'username=namn&password=pass&submit=login', }).then(async response => { let cookie = response.headers.get('set-cookie') let next = await fetch(response.url, { method: 'GET', headers: { 'Content-Type' : 'application/x-www-form-urlencoded', 'Cookie' : cookie }, }) return next })

Permalänk

Hur är det redirecten sker? Om det är den första webbsidan som gör redirecten åt dig. Så är det även dens ansvar att sätta cookie:n

Permalänk
Skrivet av NorgeMannen:

Hur är det redirecten sker? Om det är den första webbsidan som gör redirecten åt dig. Så är det även dens ansvar att sätta cookie:n

Ja det är den första webbsidan som redirectar och jag förstår att det är så jag måste göra men jag har ingen aning om hur jag ska översätta det i kod.

Permalänk
Skrivet av Trainee352:

Ja det är den första webbsidan som redirectar och jag förstår att det är så jag måste göra men jag har ingen aning om hur jag ska översätta det i kod.

Om det är första webbsidan som har cookien och gör redirecten. Så är det första webbsidans ansvar att även sätta cookien. Kan du dela med dig responsen från den första requesten?

Permalänk
Skrivet av NorgeMannen:

Om det är första webbsidan som har cookien och gör redirecten. Så är det första webbsidans ansvar att även sätta cookien. Kan du dela med dig responsen från den första requesten?

General:
Request URL: https://mysiteb/login
Request Method: POST
Status Code: 302 Found
Remote Address: 194.47.xxx.xxx:xxx

Response Headers:
Connection: keep-alive
Content-Length: 70
Content-Type: text/html; charset=utf-8
Date: Fri, 05 Mar 2021 12:32:23 GMT
Location: login/booking
Server: nginx/1.18.0 (Ubuntu)
set-cookie: qi88ZyOC0BVAZDoD6yKSpSessionId=s%3AgWVa05zJ23WFpQJi7xWQbbx1_T8V_xF1.YpL3UGXDjH7ZfjDc4FMTSn646%2B1sMKtWVJ8kfO6Vftc; Path=/; Expires=Sat, 06 Mar 2021 12:32:23 GMT; HttpOnly
Vary: Accept
X-Powered-By: Express

Permalänk

Är det din första request? Får du ingen redirect url?