빈 HTML 양식 작업을 사용하여 현재 페이지에 다시 게시하는 것에 대해 "모범 사례"응답을 줄 수있는 사람이 있는지 궁금합니다.
이 빈 HTML 양식 조치가 여기에 무엇을 요구하는 게시물 과 같은 일부 페이지 이 하나 가 괜찮 제안하지만 나는 사람들이 어떻게 생각하는지 알고 싶습니다.
<form name="xyz" >
:). 자체적으로 조치를 제출합니다.
빈 HTML 양식 작업을 사용하여 현재 페이지에 다시 게시하는 것에 대해 "모범 사례"응답을 줄 수있는 사람이 있는지 궁금합니다.
이 빈 HTML 양식 조치가 여기에 무엇을 요구하는 게시물 과 같은 일부 페이지 이 하나 가 괜찮 제안하지만 나는 사람들이 어떻게 생각하는지 알고 싶습니다.
<form name="xyz" >
:). 자체적으로 조치를 제출합니다.
답변:
가장 좋은 방법은 action 속성을 모두 생략하는 것입니다. 양식을 남기지 않으면 양식이 문서의 주소 (예 : 같은 페이지)로 제출됩니다.
비워 둘 수도 있으며 HTML 양식 제출 알고리즘을 구현하는 모든 브라우저 는 문서의 주소와 동등한 것으로 취급합니다. 주로 브라우저가 현재 작동하는 방식이기 때문에 수행됩니다.
8.
action은 제출자 요소의 action 이라고하자 .
9.
action이 빈 문자열 인 경우 action은 문서의 주소 입니다.참고 :이 단계는 RFC 3986을 고의적으로 위반 하므로 여기에서 기본 URL 처리가 필요합니다. 이러한 위반은 레거시 컨텐츠와의 호환성을 원함으로써 동기가 부여됩니다. [RFC3986]
이것은 확실히 현재의 모든 브라우저에서 작동하지만 (일부 이전 버전의 브라우저에서 예상대로 작동하지 않을 수 있습니다 " "속성을 브라우저 = 빈 조치 이상한 일을 " " 이유입니다) 사양 강력 비어 떠나는 저자을 낙담 :
action
및formaction
컨텐츠 속성이 지정된 경우, A는 값이 있어야합니다 잠재적 공백으로 둘러싸인 유효 비어 있지 않은 URL을 .
action=""
실제로 현재 HTML5 초안 의 양식 제출 하위 섹션 에서는을 허용하지 않습니다 action=""
. 사양에 위배됩니다.
action
및formaction
컨텐츠 속성이 지정된 경우, 유효한 인 값이 있어야합니다 비어 있지 않은 잠재적 공백으로 둘러싸인 URL을. (강조 추가)
mercator의 답변 에서 인용 된 부분은 authors가 아니라 구현에 대한 요구 사항입니다 . 저자는 저자 요구 사항을 따라야합니다. 이 사양을 읽는 방법을 인용하려면 :
특히 제작자 (예 : 작성자 및 제작자)에 적용되는 적합성 요구 사항이 있으며 소비자 (예 : 웹 브라우저)에 적용되는 적합성 요구 사항이 있습니다. 요구 사항에 따라 구별 할 수 있습니다. 생산자에 대한 요구 사항은 허용되는 내용, 소비자에 대한 요구 사항은 소프트웨어의 작동 방식을 나타냅니다.
빈 URL을 허용 한 HTML4에서 변경된 것은“ 브라우저가 빈 action=""
속성으로 이상한 일을 했기 때문 ”입니다. 변경 이유를 고려할 때 HTML4에서도 그렇게하지 않는 것이 가장 좋습니다.
action
양식이 문서 주소로 제출되어야 함을 나타 내기 위해 속성이 전혀 없는 것을 허용합니까 ? "지정된 경우"라고되어 있기 때문에 보인다.
action 속성을 포함하지 않으면 iframe 클릭 재킹 공격 까지 페이지가 열리 며 몇 가지 간단한 단계가 포함됩니다.
참고 문헌
$_POST
대신에 사용 $_REQUEST
하십시오. 프레임 워크 코드가 $_REQUEST
사용하는 경우 iframe 버스터를 사용하십시오 .
이것은 HTML5로 유효합니다.
<form action="#">
action="."
없습니까?
action="."
일반적인 경우에는 나쁜 생각입니다. 와 같은 URL example.com/login
은 단순히에 매핑됩니다 example.com/
.
HTML 5에서는 action=""
지원되지 않으므로 그렇게하지 마십시오. 나쁜 습관.
대신 액션을 완전히 부정하면 기본적으로 동일한 페이지에 제출됩니다. 이것이 최선의 방법이라고 생각합니다.
<form>This will submit to the current page</form>
PHP를 사용하여 양식을 요약하는 경우 다음을 고려할 수 있습니다. 자세한 내용은 여기를 참조하십시오.
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
또는 #
앵커처럼 작동하고 페이지 맨 위로 스크롤한다는 점을 명심하십시오.
<form action="#">
htmlspecialchars()
기능을 사용하면 사람들의 PHP 스크립트를 사용하지 못하게됩니다.
나는 보통 XHTML 유효하고 URL에 GET 데이터를 유지하는 action = ""을 사용한다.
action 속성을 전혀 지정하지 않는 데 사용합니다. 실제로 내 페이지는 모든 페이지가 동일한 주소로 정확하게 다시 제출되도록 설계되었습니다. 그러나 오늘 나는 문제를 발견했다. 때로는 액션 속성 값을 빌려 백그라운드 호출을합니다 (일부 사람들은 이름을 AJAX라고 생각합니다). 따라서 action 속성이 지정되지 않은 경우 IE는 action 속성 값을 비워 둡니다. action 속성을 지정하지 않으면 JavaScript 대응 항목이 적어도 정의되어 있지 않기 때문에 이해하기가 약간 이상합니다. 어쨌든 내 요점은 모범 사례를 선택하기 전에 JavaScript에서 속성을 사용하는지 여부와 같이 더 많은 컨텍스트를 이해해야한다는 것입니다.