嗨,我正在使用react native,我在带有请求js的节点中有一个请求。我不想再在服务器上发出请求。我想在前端做。我决定使用提取。 但是当我在前端执行相同的请求时,我收到内部服务器错误500 我只想要从响应中获得的Cookie。
这适用于节点:
var request = require('request');
var dataString2 = 'lmaction=doLogin&username=XXX&password=XXX';
var options2 = {
url: 'https://onlineservice.klarmobil.de/login',
method: 'POST',
headers:{
'Host': 'onlineservice.klarmobil.de',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
'Referer': 'https://www.klarmobil.de/',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Cookie': '_gali=kundenlogin'
},,
body: dataString2
};
function callback2(error, response, body) {
const cookie= response.headers['set-cookie'][0].split(";")[0]
}
request(options2, callback2);
这是我在本机中的代码:
fetch('https://onlineservice.klarmobil.de/login', {
method: 'POST', // or 'PUT'
body: 'lmaction=doLogin&username=xxx&password=xxx'
headers:{
'Host': 'onlineservice.klarmobil.de',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
'Referer': 'https://www.klarmobil.de/',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Cookie': '_gali=kundenlogin'
}
})
.catch(error => console.log('Error:', error))
.then((res)=>{
console.log(res)
const cookie= response.headers['set-cookie'][0].split(";")[0]
console.log(cookie)
})
有人可以帮助我吗?
答案 0 :(得分:1)
如果我使用Chromes本机fetch
执行此操作,则它不包含Cookie
标头(如Jaromanda X猜测的那样)。
此外,您似乎无法覆盖Referer
(可能还有其他受保护的标头),因为它与当前站点一起发送(“ https://stackoverflow.com/”)。如果我发送“ klarmobil”引荐来源网址以外的任何内容,这似乎是问题的原因:
curl -i "https://onlineservice.klarmobil.de/login" -H "Origin: https://stackoverflow.com" -H "Accept-Encoding: r" -H "Accept-Language: de,en-US;q=0.7,en;q=0.3" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Referer: https://www.klarmobil.de/" -H "Connection: keep-alive" -H "DNT: 1" --data "lmaction=doLogin^&username=xxx^&password=xxx"
-> 200
curl -i "https://onlineservice.klarmobil.de/login" -H "Origin: https://stackoverflow.com" -H "Accept-Encoding: r" -H "Accept-Language: de,en-US;q=0.7,en;q=0.3" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Referer: https://stackoverflow.com/" -H "Connection: keep-alive" -H "DNT: 1" --data "lmaction=doLogin^&username=xxx^&password=xxx"
-> 500
此外,我认为以编程方式登录外国网站上的“伪造”请求并提取此类cookie既不道德,也不是一个好主意。由于他们没有为此提供API,因此可能不希望这样做。他们还可以随时更改其登录系统,并且您的程序会中断。