Blogs

Showing 1 - 5 of 22 results.
Items per Page 5
of 5

Forums

« Back to General Questions

RE: gadget.io.makerequest GET with Paramaters fails with 403

Combination View Flat View Tree View
Threads [ Previous | Next ]
Team,
 
I'm trying to use the gadget.io.makerequest method to retrieve JSON data within my gadget.  I have this working if I do not pass any paramters to my service, however, if I add ?parameter=value  I get a 403 error. I have been able to succesfully call this service with paramters direclty form the web browser as well as an http client.  
 
Here's the code I'm using:
 

function makeJSONRequest() {
    var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = "text/html";
    params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
    var url = "http://app02:8080/soap.php?accountNumber=11111";
    gadgets.io.makeRequest(url, response, params);
};

 
 
Here's what I see returned from the request:
<ol class="properties properties-tree monospace" style="box-sizing: border-box; outline-style: none; outline-width: initial; outline-color: initial; font-size: 11px !important; font-family: Menlo, monospace; padding-top: 0px; padding-right: 6px; padding-bottom: 2px; padding-left: 16px; list-style-type: none; list-style-position: initial; list-style-image: initial; min-height: 18px; display: block; -webkit-text-size-adjust: none; line-height: normal; margin: 0px;">
<li class="parent expanded selected" style="box-sizing: border-box; margin-left: 1px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: auto;">http://app02:8080/soap.php?accountNumber=11111: {,…}<ol class="children expanded" style="box-sizing: border-box; display: block; -webkit-padding-start: 12px; list-style-type: none; list-style-position: initial; list-style-image: initial; margin: 0px;">
<li style="box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: auto;">DataHash: "csqkfhq4gui851dd113bdce9fg"</li>
<li style="box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: auto;">body: "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">↵<html><head>↵<title>403 Forbidden</title>↵</head><body>↵<h1>Forbidden</h1>↵<p>You don't have permission to access /soap.php↵on this server.</p>↵</body></html>↵"</li>
<li style="box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: auto;">rc: 403</li>
</ol></li>
</ol>

It appears the error is coming from your web server not Finesse. I suggest you try content-type application/xml rather than text/xml.

Hi David,

This appears to be working today. I'm guessing it was some kind of cacheing issue but I'm not sure where the problem was. I tried a number of different content types, restarted the web server, and restarted by dev environment but kept getting the same result. Does Finesse cache the widget code?

The strange part about this is that it would only fail when I passed parameters in the URL string. Otherwise it would work fine. You can see the request on the web server side:

172.35.1.67 - - [13/Apr/2012:14:54:00 -0500] "GET /soap.php?accountNumber=11111 HTTP/1.1" 403 210
127.0.0.1 - - [13/Apr/2012:15:07:26 -0500] "GET /soap.php?accountNumber=11111 HTTP/1.1" 200 193

the 172.35.1.67 address is Finesse. I was just about to turn up some additional logging, but it starting working.

-Dave

Does Finesse cache the widget code?


 
No cache.  You should be able to just logout the agent(s) and log back in again and the latest gadget xml is fetched.

David - Thanks for the response. I think I figured out where the cacheing is occurring. gadgets.io.makerequest() caches web calls be default, so you need to disable cacheing when the request is made as outlined in this document:

http://code.google.com/p/opensocial-resources/wiki/GadgetsMakeRequest

The following code is working for me now:


function makeJSONRequest(webServiceURL) {

var refreshInterval = 0; // no cache
var ts = new Date().getTime();
var sep = "?";
if (refreshInterval && refreshInterval > 0) {
ts = Math.floor(ts / (refreshInterval * 1000));
}
if (webServiceURL.indexOf("?") > -1) {
sep = "&";
}
webServiceURL = [ webServiceURL, sep, "nocache=", ts ].join("");

var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = "text/html";
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
gadgets.io.makeRequest(webServiceURL, response, params);
};

Collateral


No files available