• Cross Domain – PHP Proxy

    GloriaFine Member

    I’m writing a website that gets data from another domain. The purpose is that people can lookup when there are roadblocks ’cause of work and events. Everything works, except the cross-domain request.

    I’ve searched the web for “simple” php-proxies, but whatever I do, it doesn’t work on my site. Also, keep in mind, I’m completely new to PHP and working with ajax.
    Here’s the code:

    PHP-proxy, courtesy of Yahoo!:

    
    

    Here’s the code for my script:

    function searchWorkAssignments(datums, nisCode)
       {
          $("#Werkopdrachten").html("");
            $("#detail_info").html("");
            clearMap();
          var nisCode = 31043;
          var path = encodeURIComponent('DataService/GipodService.svc/GetWerkopdrachtenAsJson?starttijdstip=' + datums[0] + '&eindtijdstip=' + datums[1] + '&startpositie=1&maxrecords=25&niscode=' + nisCode);
          var url = 'proxy.php?url=' + path;
            if (nisCode.length !== 0) {
             $.ajax({
                url: url,
                cache: false,
                type: 'GET',
                success: function (data, status, xhr) {
                alert(data.length);
                   showResults(data);
                },
                error: function (xhr, status, error) {
                   alert("Fout bij het laden van werkopdrachten!");
                }
             });
          }
       }
    

    Can someone please show me what I’m doing wrong and maybe point to the right direction?

  • MarkGrillo Member

    My question is are cross domain requests allowed? I know they are blocked in JS for security reasons. Look up CORS =)

  • SapnaVishwas Member

    Making cross-domain calls via a proxy is a simple solution, assuming you do it right. Basically, you need 3 things: the target URL, and parameters and the “verb” (GET, POST, etc.). Your code is fine, except you’re passing all this stuff as var url = ‘proxy.php?url=’ + path, yet you’re trying to access it in your PHP as $_POST[‘yws_path’]. The fix is simple – either change your JS to ‘proxy.php?yws_path=’ or change your PHP to $_POST[‘url’] and $_GET[‘url’].

Viewing 2 reply threads
  • You must be logged in to reply to this topic.