질문을 삭제하지 말아주세요.!
 
1
0
-1

예외 페이지를 구현하고 있습니다..

예외 페이지에는 홈으로 가기, 뒤로가기 두개의 버튼이 있는데요..


뒤로가기 버튼을 

\URL::previous()

로 구현하였습니다..


그런데 해당 버튼을 누르면 이미지가 나오는데요..

이부분 때문에 그런 것 같습니다..

해당 부분을 접속한것으로 처리되어서 그런 것 같은데요..


히스토리에 저부분만 예외 하고 싶은데 어떤 방법이 있는지 궁금합니다..

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      (기분 나빠하시 마셨으면 좋겠습니다.) 제가 독해력이 딸려서 그런것 같은데, 질문이 이해되지 않습니다.

      1. 안유성

        아 제가 질문을 어렵게 올렸나보네요 어쩐지 답변이 없더라고요 ㅠ..ㅠ


        문제 현상은 다음과 같습니다

        1. 뒤로가기 버튼을 구현 중
        2. URL 헬퍼인 URL:previos()로 구현
        3. 하지만 실제 클릭하면, 뒤로가지 않고 마지막으로 로드한 것으로 예상되는 이미작 표시됨.


        해당문제의 요인으로 예상되는 이유는..

        1. 캐시를 쓰기 위해서 이미지를 불러오는 겟터가 있음.
        2. 해당 이미지를 로드하기 위해서 겟터가 사용되기 때문에 url history에 적용된 것으로 예측됨.


        그래서 하고 싶은 일은 특정 규칙이나 특정 URL로 접속하는 것들은 history에 기록하지 않아서,

        뒤로가기 버튼을 눌러도 그 해당 페이지로 넘어가지 않게 하고 싶습니다.



        실제 일어나는 일

        1. sample.com/123123123123123/edit  (실제 없는 모델로 접속)
        2. 에러 페이지 나옴 ( 해당 페이지는 잘못된 접근입니다라는 메세지와 뒤로 가기 버튼이 나옴.
        3. 뒤로 가기 버튼 누름
        4. sample.com/images/logo.jpg 로 이동;;;;;
      2. 김주원

        1) 

        서버측에서 HTTP Response가 한번 나가면 무조건 브라우저의 windows.history 에 쌓이게됩니다. 없는 모델로 접속하기 직전에 이미지 응답이 나가지 않는지 확인하면 좋겠네요.


        2) 

        https://github.com/laravel/framework/blob/5.4/src/Illuminate/Routing/UrlGenerator.php#L134-L147

        URL::previous() 구현을 보면 HTTP 요청의 Referer가 있으면 가장 먼저 적용되고, 없으면 세션의 'previous' 키에 저장된 경로로 이동하게 됩니다.

        1)에서 문제를 해결하지 못했다면, (라라벨의 구현을 참고해서) 세션에 2번째 전 페이지 주소를 심어 놓고, 애러 페이지의 뒤로 가기 UI에 세션에서 읽은 주소로 링크를 거는 것도 방법일 듯 합니다.



      3. 안유성

        1차원 적으로는 미들웨어를 하나 더 만들어서,

        모든 GET방식의 주소를 감지해내고, 

        거기에서 이미지를 제외한 경우에만 세션에 담았습니다..


        그래서 커스텀URL:: previous()를 개발하여서 사용중인데요..

        보니간 해외에서도 이부분이 좀 이슈인것 같긴한데.. 너무 오래 시간을 끌어서 일단은 이렇게 해결했네요..

        차후에 시간이 나면 조언해주신 방법 다시 한번 보고, 다시 도전해봐야겠어요 감사합니다..

      CommentAdd your comment...