2013-08-27 3 views
0

은 얼마나 잘 다양한 웹 서버에 같은 이름의 쿼리 매개 변수를 전송하고 (모든 경우) 지원? 즉HTTP 매개 변수 이름은 고유해야합니까?

<form ...> 
    <input name="a" value="va" /> 
    <input name="a" value="vb" /> 

대부분의 서버는이 값을 배열로 해석 할 것인가 또는 값 중 하나가 절충 될 것입니까? 즉, "a"에 액세스 할 때 PHP의 $ _REQUEST가 배열을 반환합니까? 아니면 그냥 값 중 하나를 반환 할 것인가? 그리고 이러한 입력을 지원하고 배열을 반환하는 데 필요한 모든 (괜찮은) 웹 서버를 사용합니까?

+0

HTTP 또는 HTML에 관한 질문입니까? HTTP는 쿼리 문자열의 형식을 정의하지 않습니다 (시작 방법 (?)과 끝 (#)을 넘어서). – EricLaw

+0

제 질문은 HTTP를 대상으로 한 것입니다. – Steven

답변

0

W3C HTML 4.01 spec에 따르면 "사용자가 동일한 속성에 대해 여러 값을 선택할 수 있도록 허용"(17.2.1 절 참조)하기 위해 확인란 입력 컨트롤이 최소한 동일한 이름을 공유 할 수 있습니다. 라디오 버튼의 경우 실제로 같은 이름을 공유하면 어느 것이 같은 세트에 속해 있는지 확인할 수 있습니다. (이것은 단지 하나의 값을 초래하지만, 서버로 전송되는하십시오.) HTML 4 스펙의 이름을 공유하는 것은 다른 입력 유형에 대한 허용 여부를 말할 것 같지 않지만, 체크 박스와 동일한 작동합니다.

HTML 5 스펙은 실제로 section 4.10.1.3에서 "여러 컨트롤이 같은 이름을 가질 수있다"고 구체적으로 말할 않습니다. HTML은 오랜 시간과 HTML 5 스펙은 적어도 형태의 4 다르지 아니라고 주변에있다 감안할 때, 나는 가장 현대적인 브라우저/서버가 제대로되지이 상황을 처리하려고하는 것을 말하는 것이 안전하다고 생각 가치를 파괴하십시오. 물론 가장 확실한 방법은 해당 브라우저/서버에서 직접 시도하는 것입니다.

2

대답은 순전히 당신이 사용하는 어떤 프레임 워크에 따라 달라집니다. URL 매개 변수의 값을 쿼리하면 일부 프레임 워크는 지정된 이름의 첫 번째 매개 변수를 반환합니다. 일부는 해당 이름의 마지막 매개 변수를 반환합니다. 다른 매개 변수는 해당 이름의 매개 변수 목록을 쉼표로 구분하여 반환합니다. 그러나 다른 매개 변수는 그 이름의 문자열 배열을 반환합니다.

HTTP 자체는 매개 변수 이름의 고유성에 어떤 지침을 제공하지 않으며, 심지어 쿼리 문자열의 형식을 정의 않습니다. a=b&c=d 구문은 HTML 양식에서 사용되는 단순한 규칙이지만 다른 형식은 완전히 합법적이며 일부 시나리오에서는 실제로 사용됩니다.

관련 문제