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

웹브라우저 주소창에서 다음 코드에서 나온것처럼 입력 할 경우

getIndex 함수에서 url 쿼리파라미터를 받아오려고보면 value값이 제대로 들어오지 못하고 짤려서 들어오더라구요 혹시 쿼리파라미터에 url 을 입력 하여 제대로된 값을 받아올수 없을까요?

p.s. url encode 같은건 쓸수없습니다. 주소창에 직접입력하여 api 호출하는거라서요

    CommentAdd your comment...

    4 answers

    1.  
      1
      0
      -1

      value 값이 짤려 나오는 것은 라라벨 입장에서는 aa=aa 앞에 있는 &가 test.com 의 & 인지 naver.com 의 & 인지 구분할 수 없기 때문입니다.


      songc 님 말씀처럼 직접 처리하는 수 밖에 없는 것 같습니다.


      예를 들어주신 URL 구조의 경우 아래와 같이 하면

      "http://test.com/test?q=test&url=http://www.naver.com?dd=dd&aa=aa"를 입력시
      "http://www.naver.com?dd=dd&aa=aa&bb=bb" 를 얻을 수 있습니다.


      Route::get('/test', function(Request $request){
          // 입력값 중 url 파라미터 이외의 파라미터를 제외하고 받아옵니다.
          $inputs = $request->except('q');
      
          // & 를 기준으로 구분된 파라미터 값들을 다시 원래의 url 형태로 만듭니다.
          $url = '';
          foreach($inputs as $key=>$value) {
              if($url != '') {
                  $url .= "&{$key}=";
              }
      
              $url .= $value;
          }
      
          dd($url);
      });



      1. 박관웅

        아 이런방법이 있군요. 제가 하려고 하는 방향대로 할 수 있을 거 같습니다.

        감사합니다.

      CommentAdd your comment...
    2.  
      2
      1
      0

      url 쿼리파라미터에 들어가는 값들을 urlencode 로 한번 걸러주시면 될것 같아요~

      1. 빈경윤

        프로그램 단에서 먼저 urlencode 시켜, 주소창에 붙여넣는 방법밖엔 없을 것 같네요.


        art tinker
        Psy Shell v0.6.1 (PHP 7.0.14 ??cli) by Justin Hileman
        >>> urlencode('http://www.naver.com?dd=dd&aa=aa')
        => "http%3A%2F%2Fwww.naver.com%3Fdd%3Ddd%26aa%3Daa"


        주소 입력) http://test.com/test?q=test&url=http%3A%2F%2Fwww.naver.com%3Fdd%3Ddd%26aa%3Daa

      2. 박관웅

        urlencode 개념이없는 일반 사용자가 바로 주소창에서 입력해야 하는 과정이라 

        안타깝게 urlencode는 안됩니다 ㅜㅜ 정녕 방법이없는걸까요 흙

      CommentAdd your comment...
    3.  
      1
      0
      -1

      음 그럼 어쩔수 없이 쿼리스트링을 포함해서 url 파라메터만 따로 분석하셔야 될것 같네요

      // With Query String... $url = $request->fullUrl();


        CommentAdd your comment...
      1.  
        1
        0
        -1
        1. 주소 창에 서비스 엔드포인트 뒤에 사용자가 직접 URL을 입력하나요??? 서비스에 대해 잘 모르고 하는 얘긴데, "정말" 이상한 시나리오인데요.
           
        2. 사용자가 HTML 폼을 이용하는 것인가요? 그래도 이상합니다. 폼을 이용하면 왜 HTTP GET 메서드로 전송해야 할까요?

        3. 그래도 폼을 이용한다면 keyup이나 submit 이벤트를 받아서 사용자가 폼에 입력한 URL을 자바스크립트에서 URL Encoding하고 숨은 필드의 값으로 넣고, 사용자 입력 필드는 삭제한 후 폼 전송할 수 있을 것 같네요.
        1. 박관웅
          1. '정말' 이상한 시나리오가 맞습니다. ㅜ 바로 직접 URL을 주소창에 입력하면 결과를 받는 방식입니다.
          2. HTML 폼을 이용하지 않습니다.
          3. 폼으로 이용한다거나, JS단에서 바로 ajax 호출한다면 인코딩하면 되지만 이런방식이 아니라 ... 불가능합니다.
        CommentAdd your comment...