Investigate login/register 404 errors
Investigate and address persistent 404 errors occurring during login and registration processes.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
import { toast } from "@/hooks/useToast.wrapper";
|
||||
import { toast } from "@/components/ui/use-toast";
|
||||
|
||||
/**
|
||||
* 로그인 오류 메시지를 처리하는 유틸리티 함수
|
||||
@@ -19,6 +19,8 @@ export const getLoginErrorMessage = (error: any): string => {
|
||||
errorMessage = "CORS 오류: 프록시 설정을 확인하거나 다른 프록시를 시도해보세요.";
|
||||
} else if (error.message.includes("fetch") || error.message.includes("네트워크")) {
|
||||
errorMessage = "네트워크 오류: 서버 연결에 실패했습니다.";
|
||||
} else if (error.message.includes("404") || error.message.includes("Not Found")) {
|
||||
errorMessage = "서버 오류: API 경로를 찾을 수 없습니다. 서버 설정을 확인하세요.";
|
||||
} else {
|
||||
errorMessage = `오류: ${error.message}`;
|
||||
}
|
||||
@@ -30,10 +32,10 @@ export const getLoginErrorMessage = (error: any): string => {
|
||||
/**
|
||||
* 로그인 성공 시 사용자에게 알림을 표시합니다.
|
||||
*/
|
||||
export const showLoginSuccessToast = () => {
|
||||
export const showLoginSuccessToast = (mode?: string) => {
|
||||
toast({
|
||||
title: "로그인 성공",
|
||||
description: "환영합니다! 대시보드로 이동합니다.",
|
||||
description: mode ? `${mode}로 로그인되었습니다.` : "환영합니다! 대시보드로 이동합니다.",
|
||||
variant: "default"
|
||||
});
|
||||
};
|
||||
@@ -59,6 +61,8 @@ export const isCorsOrJsonError = (errorMessage: string | null): boolean => {
|
||||
errorMessage.includes('JSON') ||
|
||||
errorMessage.includes('CORS') ||
|
||||
errorMessage.includes('프록시') ||
|
||||
errorMessage.includes('서버 응답')
|
||||
errorMessage.includes('서버 응답') ||
|
||||
errorMessage.includes('404') ||
|
||||
errorMessage.includes('Not Found')
|
||||
);
|
||||
};
|
||||
|
||||
@@ -60,30 +60,57 @@ export const verifyServerConnection = async (): Promise<{
|
||||
const supabaseUrl = supabase.auth.url;
|
||||
|
||||
// 단순 헬스 체크 요청
|
||||
const response = await fetch(`${supabaseUrl}/`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
// 연결 확인만을 위한 요청이므로 짧은 타임아웃 설정
|
||||
signal: AbortSignal.timeout(3000)
|
||||
});
|
||||
try {
|
||||
const response = await fetch(`${supabaseUrl}/`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
// 연결 확인만을 위한 요청이므로 짧은 타임아웃 설정
|
||||
signal: AbortSignal.timeout(3000)
|
||||
});
|
||||
|
||||
const elapsed = Date.now() - start;
|
||||
|
||||
// 200, 401, 404 응답도 서버가 살아있다는 신호로 간주
|
||||
if (response.ok || response.status === 401 || response.status === 404) {
|
||||
return {
|
||||
connected: true,
|
||||
message: `서버 연결 성공 (응답 시간: ${elapsed}ms)`,
|
||||
statusCode: response.status
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
connected: false,
|
||||
message: `서버 응답 오류: ${response.status} ${response.statusText}`,
|
||||
statusCode: response.status
|
||||
};
|
||||
}
|
||||
} catch (fetchError: any) {
|
||||
console.error('기본 연결 확인 실패, 대체 경로 시도:', fetchError);
|
||||
|
||||
const elapsed = Date.now() - start;
|
||||
|
||||
if (response.ok || response.status === 401) {
|
||||
// 401도 서버가 응답했다는 의미이므로 연결 성공으로 간주
|
||||
return {
|
||||
connected: true,
|
||||
message: `서버 연결 성공 (응답 시간: ${elapsed}ms)`,
|
||||
statusCode: response.status
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
connected: false,
|
||||
message: `서버 응답 오류: ${response.status} ${response.statusText}`,
|
||||
statusCode: response.status
|
||||
};
|
||||
// 대체 경로로 재시도
|
||||
try {
|
||||
const altResponse = await fetch(`${supabaseUrl}/auth/v1/`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
signal: AbortSignal.timeout(3000)
|
||||
});
|
||||
|
||||
// 어떤 응답이라도 오면 서버가 살아있다고 간주
|
||||
const elapsed = Date.now() - start;
|
||||
return {
|
||||
connected: true,
|
||||
message: `서버 연결 성공 (대체 경로, 응답 시간: ${elapsed}ms)`,
|
||||
statusCode: altResponse.status
|
||||
};
|
||||
} catch (altError) {
|
||||
// 두 가지 경로 모두 실패
|
||||
console.error('대체 경로 확인도 실패:', altError);
|
||||
throw fetchError; // 원래 에러를 던짐
|
||||
}
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.error('서버 연결 확인 중 오류:', error);
|
||||
|
||||
Reference in New Issue
Block a user