소스를 볼 때 Chrome이 페이지를 새로 고치는 것을 방지하는 방법은 무엇입니까?


20

Chrome에서 페이지 소스를 볼 때 브라우저는 새 탭을 열고 기본적으로 view-source:접두사로 URL을 붙여 넣습니다 . 이것은 바람직하지 않습니다.

개발자는 양식을 제출 한 후 소스에서만 볼 수있는 진단 결과를 포함 할 수 있습니다. Chrome에서 소스를보기 위해 페이지를 새로 고치면이 정보가 사라집니다.

어쨌든이 동작을 막을 수 있습니까?

참고 : "요소 검사"옵션에 익숙합니다. 이것은보고있는 정확한 페이지의 원시 페이지 소스를 보는 데 적합한 스탠드 인이 아닙니다.


빠른 테스트 스크립트

<pre>
  <?= print_r($_POST, true) ?>
</pre>
<form action="" method="post">
  <input id="foo" name="foo" value="bar" />
  <input type="submit" />
</form>

제출 버튼을 클릭하면 페이지에

Array
(
    [foo] => bar
)

페이지 소스를 보면 $_POST 출력 이 표시됩니다

<pre>
Array
(
)
</pre>
<form action="" method="post"> 
  <input id="foo" name="foo" value="bar" /> 
  <input type="submit" /> 
</form> 

최신 정보

버그 는 이미 제출 된 것 같습니다. 한숨...

누군가가 좋은 해결책을 알고 있다면 크게 감사하겠습니다.


그곳의 사람들은 출처가 메모리에 유지되지 않고 (미니멀리즘으로 인해) 조작되는 것을 이해하지 못합니다. 댓글 code.google.com/p/chromium/issues/detail?id=523#c47 도 좋은 아이디어로 보입니다.
Tamara Wijsman

답변:


12

버그 보고서 페이지 에서 주석 12에 언급 된 해결 방법이 작동합니다. 개발자 도구에서 리소스 추적을 활성화하십시오. (해제 된 경우 활성화하면 현재 표시된 페이지 (POST 또는 GET)를 생성 한 요청을 다시 제출합니다.) 자원 목록에서 기본 페이지를 클릭하여 소스 코드를 서버에서 반환 한 소스 코드를 볼 수 있습니다 POST 및 GET 요청 모두에 대해.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

추가 정보

사용 된 요청 방법과 POSTed 값, Chrome이 요청한 요청을 확인하는 프록시 서버 로그 및 chrome://net-internals/view-cache/Chrome이 캐싱하는 것을 확인 하는 접두사를 보여주는 간단한 PHP 파일을 사용하여 몇 가지 테스트를 실행했습니다 .

소스보기 명령을 사용하면 Chrome은 캐시 된 버전 의 페이지 소스 를 표시하고 GET 메소드를 통해 요청 된 페이지 만 캐시합니다.

이전에 GET 및 POST를 사용하여 요청한 페이지를보고있는 경우 GET 버전 만 캐시됩니다. 소스보기 명령을 사용하면 페이지를 다시 요청하지 않지만 현재 표시된 POST 버전이 아닌 캐시 된 GET 버전이 표시됩니다 (있는 경우).

POST 방법으로 만 요청한 페이지를보고있는 경우 소스보기 명령을 사용하면 Chrome에서 캐시를보고 아무것도 찾지 않고 GET을 사용하여 페이지를 요청하고 캐시하고 소스를 표시합니다. 그것의.


좋은 발견!
Tamara Wijsman

1
Chrome 은이 답변 이후 많은 변화를 겪었지만 기본적으로 동일합니다. 개발 도구를 열고 네트워크 트래픽을 기록하고 네트워크 탭에 기록 된 요청을 찾으십시오. 리디렉션 된 요청의 경우 "로그 유지"또는 "탐색시 사전 로그"를 확인하여 새로운 동기화 요청마다 로그를 지우지 않을 수 있습니다.
Jon z

1
@Jonz는이 어리 석음을 깨닫고 나서 이미 Chrome을 싫어합니다. 예를 들어 전자 상거래 웹 사이트의 감사 페이지 (GTM 코드의 실행을 확인하기 위해 사용자가 성공적으로 결제 한 후로드 된 페이지)의 페이지 소스를 확인해야했습니다. 이제 페이지를로드 할 때 필요한 세션을 설정 해제하고 세션을 찾을 수없는 경우 다시로드 할 때 사용자를 홈 페이지로 리디렉션합니다. 따라서 Chrome 해킹을 사용하려고하면 GET 및 POST 요청 만 다시 보낼 수는 있지만 세션을 재설정 할 수 없기 때문에 페이지 소스를 볼 수 없습니다. 그러므로 나는 제안 할 것이다use "Inspect Element"
Abhishek Madhani

1
@AbhishekMadhani 답장을 보내야할지 모르겠지만 아래 의견에 작성한 내용을 반복하겠습니다. Chrome Canary 37 에서 소스를 볼 때 새 네트워크 요청이 전송 되지 않는 것 같습니다 .
Jon z

2

좋은 질문입니다. "이것이 잘못되었습니다"또는 "이것이 작동하지 않습니다"라는 주석을 읽는 데 다소 실망합니다. 이 동작은 많은 경우 "페이지 소스보기"기능을 개발에 쓸모 없게 만듭니다.

현재로드 된 페이지의 소스를 실제로 표시하는 것처럼 보이는 " 빠른 소스 뷰어 " 라는 확장이 있습니다 (POST 요청으로 테스트하지는 않았습니다).


0

죄송합니다. 브라우저의 탐색 및 디버깅의 현재 특성에 위배됩니다.

원본 소스는 메모리에 보관되지 않지만 가능한 빨리 구문 분석 트리로 구문 분석 및 변환되어 불필요한 메모리 사용을 방지합니다. 따라서 소스에서 숨기는 모든 디버깅 정보가 손실되므로 명시 적으로 요청해야합니다. 소위 Web 2.0 사이트에서 요소도 변경되므로 검사가 이와 같은 이유입니다.

해결 방법 1 : Fiddler Web Debugger를 사용하면 HTTP 트래픽을 검사
할 수 있으므로 마지막 요청의 디버그 정보를 볼 수 있습니다.

해결 방법 2 : 디버깅 정보를 포함 시키거나 끝에 추가
하거나 팝업으로 표시하거나 레이아웃을 방해하지 않는 멋진 방법으로 표시하십시오.


13
TomWij는 "브라우저에서 탐색 및 디버깅의 현재 특성에 위배됩니다 ..."는 정확하지 않습니다. Firefox 및 Safari의 현재 버전은 모두 "예상"으로 동작합니다. 사실, 다른 브라우저에서 이러한 기능을 사용했기 때문에 Chrome에서 이러한 기능을 기대하게되었습니다. 원본 소스에 대한 몇 KB의 일반 텍스트를 메모리에 유지하는 것은 어렵지 않습니다.
macek

Chrome은 미니멀리즘으로 유명합니다. ;-)
타마라 Wijsman

3
이것은 명백히 거짓입니다. Chrome에서는 두 번째 요청을하지 않고 페이지의 원본 소스 (다른 이름으로 페이지 저장)를 저장할 수 있습니다. "소스보기"에 표시되어야합니다. 현재 구현은 매우 바람직하지 않습니다. 예를 들어 POST 결과를 볼 때. 소스보기는 현재 동일한 위치에 GET을 수행하여 완전히 다른 페이지를 표시합니다. 소스보기 는 향후 요청이 아니라 현재 요청 에서 항상 페이지 상태를 표시해야합니다 .
Chris

6
의심 할 여지없이 바로 View Source도 읽어야합니다. 새로운 요청은 단순히 오해의 소지가 있습니다.
Chris

2
@Jonz View Source 기능을 완전히 제거하려고하십니까? 유일한 대안이 현재 고장난 구현이라면 이것을 지원할 것입니다. 그런데 왜 둘 다 가질 수 없습니까? 개발자 툴바에서 네트워크 로그를 클릭하면 해당 수준의 정보가 필요할 때 사용할 수있는 훌륭한 옵션이지만 현재 페이지의 소스 만보고 싶다면 과잉으로 보입니다.
Chris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.