curl 에서 데이터 전송할때 해당서버에서 \u200B <-- 이 문자가 들어간다고 하는데.. 채택완료

이유가 뭔지 알수 있을까요??

 

예를 들면 

도메인/token​/balance/

이렇게 전송할때 

 

해당 서버에서는 

도메인/token\u200B/balance/ HTTP/1.1

이렇게 로그가 찍힌다고 합니다

그래서 데이터 결과 값을 받질 못하는데

 

제 쪽에서는 전송 url 에 공백제거 함수를 쓰고 뭘해도 똑같다고 합니다

 

$url = 도메인/token​/balance/

$url = preg_replace('/\s+/', '', $url);
$url = str_replace('u200B', '', $url);

 

이렇게 해도 똑같다고 합니다 ;;;

 

 

해당 서버 관리자가 php 개발자가 아니라  모르겠다고 하는데....

 

 

 

그런데 예로

도메인/token/address

이런식으로 다른 url 을 전송 했을 경우엔 제대로 들어 갑니다

 

도메인/token​/balance/ 

 

token​/balance 만 보낼때 문제가 되네요

 

무슨 문제 일까요?

 

아래는 해당업체의 소스를 url 부분만 수정한  코드 입니다

 

 

Copy
$url = '도메인/token​/balance/';
$url = preg_replace('/\s+/', '', $url);
$url = str_replace('u200B', '', $url);
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => $url ,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('mb_id' => 'devtest1'),
CURLOPT_HTTPHEADER => array(
'ApiKey: 키값'
),
));
$response = curl_exec($curl);
curl_close($curl);

echo  $response;
 

 

 

 

 

 

답변 2개

채택된 답변
+20 포인트
$url = '도메인/token​/balance/';

 

이 라인을 삭제하고 다시 타이핑해 보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

그래도 똑같아서 해당 서버에서 제쪽 데이터를 받을때 해당 문자를 공백으로 치환해 주었습니다.ㅜㅜ 답변 감사합니다.
https://www.fileformat.info/info/unicode/char/200b/index.htm
이런 좀 특별한 글자가 어떤 이유로 끼어 있는데

말씀드린 대로 하면 보통은 없어집니다.

댓글을 작성하려면 로그인이 필요합니다.

$url = str_replace('u200B', '', $url);

->

$url = preg_replace( '/[\x{200B}-\x{200D}]/u', '', $url);

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변 감사합니다. 그래도 저쪽에서는 해당 문자가 들어간다고 하네요 .. 해당 서버에서 수정을 해주었네요~~ 답변 감사합니다~~

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고