2017-04-25 5 views
0

백 슬래시를 이스케이프 처리 할 때 몇 가지 문제가 있습니다. 아래 코드는 제가 시도한 코드입니다. 문제는 이스케이프 된 슬래시가있는 변수를 다른 변수에 지정하는 방법입니다.NodeJS 백 슬래시를 이스케이프 처리합니다.

var s = 'domain\\username'; 
var options = { 
    user : '' 
}; 
options.user = s; 

console.log(s); // Output : domain\username - CORRECT 
console.log(options); // Output : { user: 'domain\\username' } - WRONG 

왜 모두가 오는 슬래시 options 객체 를 인쇄하고 때?

나는 여기에서 뭔가 잘못하고있는 것을 느꼈다. 이것은 기본 일 수있다.

업데이트 :

내가 값 (더블 슬래시와 함께) 그대로 전달하고이 객체 options를 사용하고, 나는 내 SOAP 서비스와이를 사용하고, 인해 유효하지 않은 사용자 속성 값에 401 오류가 발생.

그러나 동일한 사용자 값을 사용하여 PHP 코드에서 동일한 응답을 시도하면 PHP에서 적절한 응답을 제공하므로 값을 두 개의 슬래시로 이스케이프 처리합니다.

+0

대개 콘솔이 문자열을 이스케이프 처리합니다. 왜냐하면 대체 콘솔보다 콘솔이 더 좋습니다. –

+0

@JanDvorak 감사합니다.하지만 정말 죄송합니다. – Dipak

+0

코드가 맞습니까? 'wsdl_headers'가 옵션에 없기 때문에 실행하면 오류가 발생합니다. – user3432422

답변

2

출력이 정확합니다.

변수를 설정하면 이스케이프 된 백 슬래시가 단일 코드 포인트로 해석됩니다.

그러나 options은 로그인 할 때 JSON blob로 나타나는 객체입니다. JSON 출력 내에서 백 슬래시가 문자열 값으로 유효하게 나타날 수있는 유일한 방법이기 때문에 백 슬래시는이 시점에서 다시 이스케이프 처리됩니다.

console.log(options)에서 JSON 출력을 다시 읽고 (JSON.parse() 등을 사용하여) javascript로 출력 한 다음 사용자 키를 출력하면 백 슬래시가 하나만 표시됩니다. 질문 편집 : 다음

(

당신의 데이터가 SOAP의 소비 서비스에 의해 받아 들여지기를 들어, 데이터가 명시 적으로 대역 이스케이프 할 필요가있을 수 있습니다. 값을 할당 할 때이 경우, 당신이 필요합니다 두 번 탈출 :

var s = 'domain\\\\user' 

가 결정적으로이 작업을 수행 여부를해야하는지 여부를 결정하기를, 나는 당신이 당신의 작업 PHP 응용 프로그램 사이에 프록시를 넣어 좋을 것 SOAP 응용 프로그램을 검사하고 트래픽을 검사합니다.

+0

감사합니다. 업데이트 된 질문을 확인해 주실 수 있습니까? – Dipak

+0

소비 SOAP 서비스를 언급하는 질문 편집을 반영하도록 업데이트되었습니다. – Benjamin

2

console.log() 개체는 util.inspect()을 사용하여 먼저 문자열로 변환됩니다. util.inspect()은 문자열을 더 쉽게/정확하게 표시하기 위해 (예 : JSON.stringify(s) 인 경우와 마찬가지로) 문자열 속성 값의 형식을 리터럴 형식 (\n과 같은 제어 문자가 포함될 수 있음)으로 표시합니다. 이렇게하면 문자열의 특정 문자를 이스케이프 처리하여 유효한 Javascript 문자열이되도록해야하므로 백 슬래시가 이스케이프 처리 된 코드가 사용자 코드에 그대로 표시됩니다.

+0

감사합니다.하지만 데이터가 그대로 전달되어 API 서비스에서'\\'의 값을 가진 객체를 사용하여 401 오류가 발생합니다. – Dipak

+0

이미 백 슬래시를 올바르게 이스케이프 처리하고 있습니다. API 오류 상태의 원인은 다른 곳에서 찾을 수 있습니다. – mscdex

+0

그러나'API' 객체는'value'를 가진'error response' 메시지를 돌려주었습니다.'user property' 값에'slash'가 두 개 있습니다. 그러나 동일한 사용자 값을 사용하여 PHP 코드에서 동일한 응답을 시도하면 PHP에서도 '두 개의 슬래시'로 값을 이스케이프 처리합니다. – Dipak

관련 문제