답변:
가져 오기는 기본적으로 쿠키를 사용하지 않습니다. 쿠키를 활성화하려면 다음과 같이하십시오 :
fetch(url, {
credentials: "same-origin"
}).then(...).catch(...);
same-origin
(어느 않습니다 더 헤더 (쿠키 등)을 존중하지만 코드가 응답에 대한 액세스가 제한됩니다 여전히 작업)을 의미합니다.
document.cookie
없지만 여전히 ajax 또는 페치 요청에 사용할 수 있음을 의미합니다.
교차 출처 요청을하는 사람들을위한 @Khanetor의 답변 외에도 : credentials: 'include'
샘플 JSON 페치 요청 :
fetch(url, {
method: 'GET',
credentials: 'include'
})
.then((response) => response.json())
.then((json) => {
console.log('Gotcha');
}).catch((err) => {
console.log(err);
});
https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials
document.cookie
것이 요청에 포함되기에 충분 하다는 것을 알았습니다 .
방금 해결했습니다. 그냥 두 f. 잔인한 날
나를 위해 비밀은 다음과 같습니다.
POST / api / auth에 전화를 걸어 쿠키가 성공적으로 수신되었음을 확인했습니다.
그런 다음 credentials: 'include'
요청과 함께 쿠키가 전송되지 않았으므로 GET / api / users /를 호출 하고 401 인증을받지 못했습니다.
KEY는 credentials: 'include'
첫 번째 /api/auth
통화에도 설정됩니다.
credentials: 'include'
먼저 지정해야합니다POST /api/auth
2019 년에이 내용을 읽는 경우 credentials: "same-origin"
기본값입니다.
fetch(url).then
.net
webapi2
사용자를 위해 여기에 정답을 추가하십시오 .
cors
클라이언트 사이트가 다른 주소에서 제공되기 때문에 사용 하는 경우 서버 측 구성 webapi
에도 포함해야 SupportsCredentials=true
합니다.
// Access-Control-Allow-Origin
// https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
var cors = new EnableCorsAttribute(Settings.CORSSites,"*", "*");
cors.SupportsCredentials = true;
config.EnableCors(cors);
이것은 나를 위해 작동합니다 :
import Cookies from 'universal-cookie';
const cookies = new Cookies();
function headers(set_cookie=false) {
let headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
};
if (set_cookie) {
headers['Authorization'] = "Bearer " + cookies.get('remember_user_token');
}
return headers;
}
그런 다음 전화를하십시오.
export function fetchTests(user_id) {
return function (dispatch) {
let data = {
method: 'POST',
credentials: 'same-origin',
mode: 'same-origin',
body: JSON.stringify({
user_id: user_id
}),
headers: headers(true)
};
return fetch('/api/v1/tests/listing/', data)
.then(response => response.json())
.then(json => dispatch(receiveTests(json)));
};
}