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_data, true);
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