저는 Next.js 13 버전으로 개발중입니다.
스프링으로 개발하신 분이
localhost:9001/api/user/signup 으로 api 만들었고 요청 데이터가
{
id : 'string' ,
password : 'string',
gender : 'MALE',
birth : '2023-01-01'
} 이었습니다.
그래서
대충
<form action = 'http://localhost:9001/api/user/signup' method = 'post' >
<input type ='text' name = 'id'/>
<input type ='password' name = 'password'/>
<input type ='radio' name = 'gender' value = 'MALE'/>
<input type ='radio' name = 'gender' value = 'FEMALE'/>
<input type ='date' name = 'birth'/>
<input type ='submit' value = '가입'/>
</form>
이라고 작성했는데 localhost에 대한 액세스가 거부되었다고 뜹니다.
우선 localhost:9001/api 에 있는 다른 GET요청을 받는 URL에 GET요청을 하면 데이터가 잘오는데 POST가 안되네요...
스프링은 아직 국비에서 배우지 못해서 모르겠어!
ㅠㅠ
localhost:9001/api/user/signup으로 POST 요청을 보내는 경우 CORS (Cross-Origin Resource Sharing) 정책이나 Spring Security와 같은 이유로 액세스가 거부될 수 있습니다. 여러 가지 이유가 있을 수 있으므로 다음과 같은 점을 확인하고 수정해보세요. 설정 확인: Spring Boot 애플리케이션에서는 CORS 관련 설정이 필요할 수 있습니다. @CrossOrigin 어노테이션을 사용하여 허용할 오리진을 지정하거나, WebMvcConfigurer를 구현하여 CORS 설정을 추가할 수 있습니다.
@RestController
@CrossOrigin(origins = "
http://localhost:9001")
// 허용할 오리진 설정
@RequestMapping("/api/user")
public class UserController {
// ...
}
2. Spring Security 설정 확인:
Spring Security를 사용하는 경우, 보안 설정이 POST 요청을 허용하지 않을 수 있습니다. Spring Security 설정에서 POST 메소드에 대한 권한을 확인해보세요.
3. 폼의 Content-Type:
HTML 폼에서는 기본적으로 application/x-www-form-urlencoded으로 데이터를 전송합니다. Spring Boot의 컨트롤러에서는 @RequestBody로 JSON 형태의 데이터를 받는 것이 일반적입니다. 폼 전송 방식을 변경해보세요.
form action='
http://localhost:9001/api/user/signup'
method='post' enctype='application/json'
/form
POST 요청 처리 메소드 확인: Spring 컨트롤러에서 @PostMapping("/signup")과 같이 POST 요청을 처리하는 메소드가 정확하게 구현되어 있는지 확인하세요. 로컬 서버 동작 확인: 로컬 서버가 정상적으로 동작하는지 확인하세요. POST 요청을 지원하는지 확인해보세요. 브라우저 콘솔 확인: 브라우저 콘솔에서 CORS 관련 오류 메시지를 확인할 수 있습니다. 브라우저 개발자 도구를 열고 콘솔 탭을 확인해보세요. 위의 사항을 확인하고 수정한 후에도 문제가 해결되지 않으면 브라우저 콘솔이나 Spring Boot 애플리케이션 로그에서 추가 정보를 확인할 수 있습니다.
와;;;;; 감사합니다. 말씀해주신거 확인해보고 바로 해보겠습니다.
1234