0

내 웹 응용 프로그램에서 다음 태그를 렌더링한다고 가정합니다.객체 태그의 데이터 속성을 백분율로 인코딩해야합니까?

<object type="application/x-pdf" data="http://example.com/test%2Ctest.pdf"> 
    <param name="showTableOfContents" value="true" /> 
    <param name="hideThumbnails" value="false" /> 
</object> 

data 특성을 이스케이프 처리해야합니까 (백분율 인코딩 된 경로) 또는 아니요? 나의 예에서는 그렇다. 나는 어떤 명세도 찾지 못했다.

부록

사실, data 속성을 사용하는 브라우저 플러그인이 무엇을 기대해야하는지에 대한 사양에 관심이 있습니다. 예를 들어, Adobe Acrobat 플러그인은 이스케이프 및 이스케이프되지 않은 URI를 모두 사용합니다. 그러나 QWebPluginFactorydata 특성을 사람이 읽을 수있는 URI (이스케이프 처리되지 않은)로 취급하므로 인코딩이 2 %로 증가합니다. 그리고 그것이 QWebPluginFactory의 버그인지 아닌지 궁금합니다.

답변

1

data attribute은 값이 URI 일 것으로 예상합니다. 따라서 구문 적으로 유효한 URI 값을 제공해야합니다.

현재 URI 지정은 RFC 3986입니다.URI에의 경로에 , 인코딩해야하는지 여부를 확인하려면 경로 생산 규칙 정의 방법에 대해 살펴 걸릴 :

path   = path-abempty ; begins with "/" or is empty 
      /path-absolute ; begins with "/" but not "//" 
      /path-noscheme ; begins with a non-colon segment 
      /path-rootless ; begins with a segment 
      /path-empty  ; zero characters 

을 우리가 권한 정보가있는 URI를 가지고 있기 때문에, 우리는 (URI production rule 참조) 경로 abempty을 살펴해야합니다

path-abempty = *("/" segment) 

세그먼트는 다음과 같이 정의된다 문자는 다음과 0 개 이상의 를 PChar (I 이미 생성 규칙을 확장 한)입니다 :

pchar   = ALPHA/DIGIT/"-"/"."/"_"/"~"/"%" HEXDIG HEXDIG/"!"/"$"/"&"/"'"/"("/")"/"*"/"+"/","/";"/"="/":"/"@" 

그리고 당신이 볼 수 있듯이, 를 PChar는로 확장 문자 ,. 따라서 을 경로 구성 요소로 인코딩 할 필요가 없습니다. 그러나 의미를 변경하지 않고 백분율 인코딩을 사용하여 구분 기호가 아닌 문자를 인코딩 할 수 있으므로 , 대신 %2C을 사용하는 것이 좋습니다.

+0

가장 중요한 것을 지적 했으므로이 대답을 수락하십시오 :'data' 속성은 사양에 따른 URI입니다. –

0

일반적으로 URL에는 특정 문자 만 포함될 수 있습니다. 안타깝게도 다른 사양에는 예약 된 것으로 간주되어 사용할 수없는 다른 문자 목록이 포함되어 있습니다.

예제에서 인코딩 된 문자는 쉼표 (,)이며 일부 사양에서는 예약 된 문자이므로 인코딩하는 것이 좋습니다.

대부분의 웹 서버는 인코딩되지 않은 쉼표와 인코딩 된 쉼표를 동일하게 처리해야하지만 구성에 따라 다를 수 있습니다. 그 때문에 일반적으로 파일 이름에 특수 문자를 사용하는 것을 피하는 것이 좋습니다 (예제에서와 같이).

GET 매개 변수에 특수 문자가있는 경우 URL 인코딩이 항상 필요합니다.

http://example.com/somescript.php?value=C%26A 

편집 :

플러그인 (또는 브라우저) 중 하나를 걱정하지 않는다 값으로 작성되어야로 지원 C&A을하는 것입니다 GET 매개 변수는 예를 들어, 방법. 그들은 그것을 해독하려고 노력하지 않습니다. 그들은 단지 서버에서 입력 한대로 URL을 요청합니다.

+0

실제로, 나는'data' 속성을 소비하는 브라우저 플러그인이 무엇을 기대하는지에 대한 사양에 관심이 있습니다. 내 질문을 확장하겠습니다. –

관련 문제