json 에러 이유를 찾고 있습니다. 채택완료
json 로직에 무엇이 잘못된건지 에러로그가 생성되네요
방화벽에서 에러때문에 차단을 한거 같은데... 에러의 원인을 찾아야하는데, 도통 이유를 모르겠습니다.
에러 로그 입니다 -_-;;
[Tue Dec 05 03:51:36.145392 2023] [:error] [pid 20241] [client 211.211.211.211] ModSecurity: Warning. Match of "rx ^OPTIONS$" against "REQUEST_METHOD" required. [file "/usr/local/apache/conf/modsec_rules/modsecurity-global.conf"] [line "326"] [id "960015"] [msg "Request Missing an Accept Header"] [data ""] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER"] [hostname "www.happyjung.com"] [uri "/api/error_json.php"] [unique_id "ZW4fuDwq"]
error_json.php 내용은 다음과 같습니다
<?php
include_once('_common.php');
header('Content-type: application/json; charset=utf8');
if ($device_id) {
$sql_device = " select * from `order_device` where device_id = '{$device_id}' and agent_id != '' ";
$row_device = sql_fetch($sql_device);
if ($ping_error_wdate == '') $ping_error_wdate = date('Y-m-d H:i:s');
// 등록
if ($row_device['device_id']) {
$row_array = [ 'device_id' => $device_id, 'ping_error_sdate' => $ping_error_sdate, 'ping_error_wdate' => $ping_error_wdate, 'msg' => '정상' ];
if ($ping_error_sdate) {
$sql_up = " insert into `order_ping_error` (device_id, ping_error_sdate) values ('{$device_id}', '{$ping_error_sdate}') " ;
sql_query($sql_up);
}
} else{
$row_array = [ 'device_id' => $device_id, 'ping_error_sdate' => $ping_error_sdate, 'ping_error_wdate' => $ping_error_wdate, 'msg' => '미인증' ];
}
} else {
$row_array = [ 'device_id' => $device_id, 'ping_error_sdate' => $ping_error_sdate, 'ping_error_wdate' => $ping_error_wdate, 'msg' => '미등록' ];
}
echo json_encode($row_array, JSON_UNESCAPED_UNICODE);
답변 2개
Request Missing an Accept Header
클라이언트가 서버로 보낸 요청에는 Accept 헤더가 없다고 합니다.
따라서 클라이언트 요청에 Accept 요청에 이 헤더를 추가시켜 주므로해서, 방화벽에서의 차단이 해제될 것으로 보입니다.
그렇다면...
보안도구가 해당요청을 차단하지 않도록 헤더부분에 header('Accept: application/json'); 추가 해줘보세요
답변에 대한 댓글 6개
무엇을 더 봐야 할까요?
[Wed Dec 06 08:51:07.961926 2023] [:error] [pid 25372] [client 211.111.111.111] ModSecurity: Warning. Match of "rx ^OPTIONS$" against "REQUEST_METHOD" required. [file "/usr/local/apache/conf/modsec_rules/modsecurity-global.conf"] [line "326"] [id "960015"] [msg "Request Missing an Accept Header"] [data ""] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER"] [hostname "www.happyjung.com"] [uri "/api/ping_json.php"] [unique_id "ZW@3a5dPgKgF"]
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type"
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");
일단 위 사항을 한번해보세요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
include_once('_common.php');
header('Content-type: application/json; charset=utf8');
header('Accept: application/json');