Tworzę aplikacje w reactcie, z backendem w laravelu. Endpointy nie wymagające autoryzacji, takie jak logowanie czy rejestracja działają bez problemu. Endpointy z autoryzacją wykorzystujące metodę get również działają. Natomiast te wymagajace autoryzacji i korzystające z innych method http niż get za każdym razem się wysypują. Zwracany jest error 401. Ten problem w postmanie nie występuje.
axios.post("http://localhost:8000/api/register", params)
.then((response) => {
this.props.login(response.data.access_token)
})
Powyższy endpoint działa bez zarzutu,
componentDidMount() {
this.getFoodporn()
}
getFoodporn() {
console.log(this.props.token)
axios.get("http://localhost:8000/api/foodporn",{
headers: {
'Authorization': 'Bearer ' + this.props.token,
}
})
.then((response) => {
if (response.data.id === undefined) {
this.setState({
empty: true,
})
} else {
this.setState({
id: response.data.id,
userId: response.data.user_id,
name: response.data.name,
image: response.data.image,
points: response.data.points,
userName: response.data.user_name,
})
}
let elem = document.getElementById("foodporn")
elem.style.opacity = 1
})
}
rateFoodporn(rating) {
const rate = rating === 1 ? "good" : "bad"
console.log(this.props.token)
axios.patch(`http://localhost:8000/api/foodporn/${this.state.id}/${rate}`, {
headers: {
'Authorization': 'Bearer ' + this.props.token,
}
})
.then((response) => {
this.getFoodporn()
})
.catch((error) => {
console.log(error.response)
})
}
Tutaj z kolei mamy 2 endpointy wymagające autoryzacji. Dla pewności w konsoli wyświetliłem token przed każdym z nich aby sprawdzić czy napewno jest identyczny, i okazało się że w obu przypadkach jest taki sam. Pierwszy z nich wykorzystuje metodę get i działa prawidłowo. Drugi natomiast z metodą patch zwraca error 401. Gdy zmieniłem w laravelu i reactcie metodę na get endpoint działał. Sprawdzałem też jak działa z innymi metodami, put i post, i występuje tam również error 401.
xhr.js:177 PATCH http://localhost:8000/api/foodporn/7/good 401 (Unauthorized)
To przykładowy błąd wyświetlany w konsolu. A poniżej screen z postmana z tym samym adresem
