react native fetch没有获得与post man相同的内容



我有一个小问题,我的请求从https://readnovelfull.com/beauty-and-the-beast-wolf-hubby-xoxo/chapter-1-i-would-not-be-responsible.html获得html为例。

我可以在其他url上获得所有的html,例如novel detalj, latest upgated等。

但当我得到章节的详细信息时,就没有了。

我在postmanhttps://codebeautify.org/source-code-viewer上测试了这些url,并且在获取它存在于div#chr-content

下的章节内容时没有问题。所以我现在有点迷路了,我做错了什么?

这是我的fetch调用,它正在其他小说网站上工作。

static async getHtml(
url: string
): Promise<HTMLDivElement> {
console.log(`Sending html request to ${url}`);
var container = parse('<div>test</div>') as any;
try {
let headers = new Headers({
Accept: '*/*',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
});
var data = await fetch(url, {
method: 'GET',
headers: headers,
});
if (!data.ok) {
const message = `An error has occured:${data.status}`;
console.log(message);
} else {
var html = await data.text();
console.log('Data is ok. proceed to parse it');
container = parse('<div>' + html + '</div>') as any;
}
} catch (e) {
console.log(e);
}
return container as HTMLDivElement;
}

我应该说我没有得到任何错误,只是我得到的html与postman和其他网站得到的不一样。

好吧,我在网站上做了一些研究,这就是我得出的结论。

网站需要X-CSRF-TOKEN,我能够提取这些并找到这些值

const csrf = 'x09Q6KGqJOJJx2iHwNQUa_mYfG4neV9EOOMsUBKTItKfNjSc0thQzwf2HvCR7SQCqfIpC2ogPj18jG4dQPgVtQ==';
const id = 774791;

我需要用上面的值发送一个请求到https://readnovelfull.com/ajax/increase-chapter-views。这将返回true/false

现在我试图在我的fetch调用之后加入csrf,但它仍然是相同的旧数据。

任何想法,如果我做错了什么?

看起来您的CORS有问题。为了确保,只需尝试通过cors代理发送请求。一种快速的方法是添加前缀URL:

https://cors-anywhere.herokuapp.com/https://readnovelfull.com/beauty-and-the-beast-wolf-hubby-xoxo/chapter-1-i-would-not-be-responsible.html '

注意:不建议在生产环境中使用这个CORS代理,因为它不安全

如果在此之后您将收到数据,这意味着您面临CORS,您需要找出如何在您的具体情况下解决它。

Reproducable例子:

const parse = (str) => str;
const getHtml = async (url) => {
console.log(`Sending html request to ${url}`);
var container = parse('<div>No content =(</div>')
try {
let headers = new Headers({
Accept: '*/*',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
});
var data = await fetch(url, {
method: 'GET',
headers: headers,
});
if (!data.ok) {
const message = `An error has occured:${data.status}`;
console.log(message);
} else {
var html = await data.text();
console.log('Data is ok. proceed to parse it');
container = parse('<div>' + html + '</div>');
}
} catch (e) {
console.log(e);
}
return container;
}
getHtml('https://cors-anywhere.herokuapp.com/https://readnovelfull.com/beauty-and-the-beast-wolf-hubby-xoxo/chapter-1-i-would-not-be-responsible.html').then(htmlContent => document.querySelector('div').innerHTML = htmlContent);
<div>loading...</div>

如果没有帮助,请提供一个可复制的RN示例,但我相信在这种情况下RN和web环境之间没有区别。

最新更新