Web 프로그램/JMeter

JMeter content-type 인식 문제

Link2Me 2025. 2. 24. 13:59
728x90

PHP의 $_POST 변수는 application/x-www-form-urlencoded 또는 multipart/form-data 형식의 데이터를 처리한다.

 

로그인 처리하는 파일에서 코드 구조가

 

로 되어 있다면 application/json 으로 Content-Type를 넘기면 안된다.

Content-Type:application/x-www-form-urlencoded 로 설정해야 한다.

 

 

JMeter에서 JSON을 Body Data로 보낼 경우, $_POST가 아니라 php://input을 통해 데이터를 읽어야 한다.

 

와 같이 데이터를 넘기면 로그인 결과 처리를 하는 파일 구조도 아래와 같이 변경되어야 JSON 으로 넘어온 데이터를 인식하고 처리한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
if(!isset($_SESSION)) {
    session_start();
}
 
// jwt 라이브러리 사용
use \Firebase\JWT\JWT;
 
error_reporting(0);
 
// JSON 데이터를 가져오기
$json_data = file_get_contents("php://input");
 
// JSON을 PHP 배열로 변환
$data = json_decode($json_datatrue);
 
if(isset($data['userID']) && !empty($data['userID']) && isset($data['password']) && !empty($data['password'])) {
    require_once 'path.php';
    require_once $g['path_config'].'config.php';
    require_once $g['path_class'].'dbconnect.php';
    require_once $g['path_class'].'loginClass.php';
    require_once $g['path_root'].'vendor/autoload.php';
 
    @extract($data);
 
    $c = new LoginClass();
 

 

 

POST 요청이 application/json 방식으로 보내진 경우
→ $_POST['userID']로 접근 불가능 ❌
→ file_get_contents("php://input")를 사용해야 데이터 수신 가능

POST 요청이 application/x-www-form-urlencoded 방식으로 보내진 경우
→ $_POST['userID']로 접근 가능
→ JSON이 아니라 key-value 쌍으로 데이터를 전송해야 함

728x90