AnsweredAssumed Answered

Proxy not appearing to send a GET request

Question asked by AndyBeck1349826 on Oct 18, 2016

From within an app, it appears I need to change a proxy to use the GET method to read data and not the OPTIONS method. I have attempted to set the 'method' for the proxy but it does not appear to be taking effect.

 

var operation = new Ext.data.Operation({
  action: 'read',
});

var proxy = new Ext.data.proxy.Ajax({
  type: 'ajax',
  url: testURL,
  method: 'GET',
  withCredentials: true
});

proxy.read( operation );

 

Request Headers from debugger (notice OPTIONS)

 

OPTIONS /web/datasource?_dc=1476803593106&page=1&start=0&limit=25 HTTP/1.1
Host: <removed>
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: https://rally1.rallydev.com
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36
Access-Control-Request-Headers: x-requested-with
Accept: */*
Referer: <hidden>
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8

 

The following code works but is not independent of a data store:

var createCORSRequest = function(method, url) {
  var xhr = new XMLHttpRequest();
  if ("withCredentials" in xhr) {
    // Most browsers.
    xhr.open(method, url, true);
  } else if (typeof XDomainRequest != "undefined") {
    // IE8 & IE9
    xhr = new XDomainRequest();
    xhr.open(method, url);
   } else {
     // CORS not supported.
     xhr = null;
  }
  return xhr;
};

var url = testURL;
var method = 'GET';
var xhr = createCORSRequest(method, url);

xhr.onload = function() {
  // Success code goes here.
  alert( xhr.response );
};

  xhr.onerror = function() {
  // Error code goes here.
};

xhr.withCredentials = true;
xhr.send();

Outcomes