값이 없으면 URL 쿼리 매개 변수가 유효합니까?
URL이 http://example.com/foo?bar
유효합니까?
나는 어떤 식 으로든 다른 식으로 말하는 공식에 대한 링크를 찾고 있습니다. 간단한 예 / 아니오 답변 또는 일화적인 증거는 그것을 자르지 않을 것입니다.
- URI RFC에 유효
- 서버 측 프레임 워크 / 코드에 적합
URI RFC는 쿼리 문자열의 형식을 강제하지 않습니다. 쿼리 문자열에는 종종 이름-값 쌍이 포함된다는 점이 인식되지만 필수는 아닙니다 (예 : 종종 다른 URI를 포함 할 것).
3.4. 질문
쿼리 구성 요소에는 경로 구성 요소 (섹션 3.3)의 데이터와 함께 URI 체계 및 명명 권한 (있는 경우) 범위 내에서 리소스를 식별하는 비 계층 데이터가 포함됩니다. ...
... 그러나 쿼리 구성 요소는 종종 "key = value"쌍의 형태로 식별 정보를 전달하는 데 사용되며 자주 사용되는 값 하나는 다른 URI에 대한 참조입니다.
HTML 은 HTTP GET을 통해 제출 된 양식이 양식 값을 "? key1 = value1 & key2 = value2 ..."형식으로 이름-값 쌍으로 인코딩해야합니다 (적절하게 인코딩 됨). 쿼리 문자열 구문 분석은 서버 측 코드 (예 : Java 서블릿 엔진)에 달려 있습니다.
사용하는 서버 측 프레임 워크를 식별 할 수는 없지만 서버 측 프레임 워크는 쿼리 문자열이 항상 이름-값 쌍에 있다고 가정하고 그렇지 않은 쿼리 문자열에서 질식 할 수 있습니다. 해당 형식으로 (예 :) ?bar
. 쿼리 문자열을 구문 분석하는 고유 한 사용자 지정 코드 인 경우 해당 쿼리 문자열 형식을 처리해야합니다. 프레임 워크 인 경우 문서를 참조하거나 간단히 테스트하여 처리 방법을 확인해야합니다.
그들은 완벽하게 유효합니다. 당신은 그들이 폭도 메신저 뒤에 조용히 서있는 큰 근육질의 사람과 동등한 것으로 간주 할 수 있습니다. 그 사람은 이름이없고 말도하지 않지만 그의 존재는 정보를 전달합니다.
""http "체계는 HTTP 프로토콜을 통해 네트워크 리소스를 찾는 데 사용됩니다.이 섹션에서는 http URL에 대한 체계 별 구문 및 의미를 정의합니다." http://www.w3.org/Protocols/rfc2616/rfc2616.html
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
예, 물음표 뒤에는 아무 것도 유효합니다. 서버가 다르게 해석 할 수도 있지만 일화 적으로 일부 언어는이를 부울 값으로 취급하는 것을 볼 수 있습니다.
예, 유효합니다.
매개 변수가 존재하는지 여부를 확인하려는 경우이를 수행하는 한 가지 방법입니다.
URI 사양
URI 스펙의 유일한 관련 부분은 첫 번째 와 첫 번째 사이의 모든 내용 을 쿼리의 스펙 정의에 맞추는 것입니다. 와 같은 문자를 포함 할 수 있습니다 . 이는 또는 같은 쿼리 문자열 이 유효 함을 의미 합니다.?
#
[:/.?]
?bar
?ten+green+apples
HTML 사양
isindex
HTML5는 의미가 없습니다.
그것은 제공하는 것 되지 않는 이름없이 단지 형태의 첫 번째 요소로 사용하고,을 제출하십시오.
항목 이름이 "isindex"이고 유형이 "text"이고 이것이 양식 데이터 세트의 첫 번째 항목 인 경우 결과 값을 추가하고이 항목의 나머지 하위 단계를 건너 뛰고 다음 항목으로 이동하십시오. 항목 (있는 경우) 또는 전체 알고리즘의 다음 단계 (그렇지 않은 경우)
isindex 플래그는 레거시 전용입니다. HTML 문서를 준수하는 양식은이 플래그 세트로 디코딩해야하는 페이로드를 생성하지 않습니다.
isindex가 마지막 으로 지원 된 시간 은 HTML3 입니다. HTML5에서 사용하면 이전 버전과의 호환성을 쉽게 제공 할 수 있습니다.
라이브러리 지원
이 형식의 URI에 대한 라이브러리 지원은 다양하지만 일부 라이브러리는 레거시 지원을 제공하여 쉽게 사용할 수 있습니다 isindex
.
Perl URI.pm (특별 지원)
Perl의 URI 와 같은 일부 라이브러리는 이러한 종류의 구조를 구문 분석하는 메소드를 제공합니다.
$uri->query_keywords
$uri->query_keywords( $keywords, ... )
$uri->query_keywords( \@keywords )
Sets and returns query components that use the keywords separated by "+" format.
Node.js url
(특별 지원 없음)
더 빈번한 또 다른 예로, node.js
일반 경로를 사용하고 다음 중 하나로 쉽게 구문 분석합니다.
- 끈
- or, an object of keys and values (using
parseQueryString
)
Most other URI-parsing APIs following something similar to this.
- PHP
parse_url
, follows as similar implementation but only returns the string for the query. Parsing into an object ofk=>v
requiresparse_string()
It is valid: see Wikipedia, RFC 1738 (3.3. HTTP), RFC 3986 (3. Syntax Components).
isindex
deprecated magic name
from HTML5
This deprecated feature allows a form submission to generate such an URL, providing further evidence that it is valid for HTML. E.g.:
<form action="#isindex" class="border" id="isindex" method="get">
<input type="text" name="isindex" value="bar"/>
<button type="submit">Submit</button>
</form>
generates an URL of type:
?bar
Standard: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
is however deprecated as mentioned at: https://stackoverflow.com/a/41689431/895245
As all other answers described, it's perfectly valid for checking, specially for boolean kind stuff
Here is a simple function to get the query string by name:
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
and now you want to check if the query string you are looking for exists or not, you may do a simple thing like:
var exampleQueryString = (getParameterByName('exampleQueryString') != null);
the exampleQueryString
will be false
if the function can't find the query string, otherwise will be true
.
참고URL : https://stackoverflow.com/questions/4557387/is-a-url-query-parameter-valid-if-it-has-no-value
'Programing' 카테고리의 다른 글
명명 된 파이프의 예 (0) | 2020.07.10 |
---|---|
Django와 ReactJS를 함께 사용하는 방법? (0) | 2020.07.10 |
주석 @GetMapping과 @RequestMapping의 차이점 (method = RequestMethod.GET) (0) | 2020.07.10 |
어떤 브랜치와 병합하길 원하는지 알려주지 말고 (0) | 2020.07.10 |
XML 사이트 맵에 어떤 콘텐츠 유형 값을 보내야합니까? (0) | 2020.07.10 |