Cześć,
Od paru dni się męczę z web scrappingiem sjp.pl. Robię gierkę boggle - coś w stylu Scrabble tylko bardziej kompaktowe i na czas ;). I chciałem dodać wygodną funkcję sprawdzania, czy słowo jest dopuszczalne w grach. Ogarnąłem już to od strony logicznej, ale niestety CORS mnie blokuje.
Próbowałem już kilku różnych sposobów, użycie cors() jako middleware, fetche z dodatkowym url corsującym (?) coś takiego znalazłem na forum. Najbliżej działającej wersji rozwiązania jestem w kodzie poniżej - gdy odpali się dodatek w Chrome CORS, wszystko działa, no ale zakładam, że jak się wrzuci to potem na github pages, to nie będzie działało :(. Czy moglibyście coś doradzić, jak to zrobić, by błąd poniżej zacytowany się nie pojawiał?
xhr.js:166 Cross-Origin Read Blocking (CORB) blocked cross-origin response https://sjp.pl/programista with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details.
import React from 'react';
import SearchBar from '../SearchBar/SearchBar';
import sjp from '../../apis/sjp';
const axios = require('axios');
const cheerio = require('cheerio');
const cors = require('cors');
class SjpChecker extends React.Component {
state = { response: [] };
onWordSubmit = async word => {
const response = await axios
.get(`https://sjp.pl/${word}`)
.then(response => {
const html = response.data;
const $ = cheerio.load(html);
const slowo = $('p')
.first()
.text();
this.setState({ response: slowo });
})
.catch(console.error);
console.log(this.state.response);
};
render() {
return (
<div className="ui field">
<SearchBar onFormSubmit={this.onWordSubmit} />
</div>
);
}
}
export default SjpChecker;