Hello,
I remember having to tell restlet to allow cross domain posts using a specific
route for a crossdomain.xml file like this:
private static final String CLIENT_ACCESS_POLICY = "/crossdomain.xml";
router.attach(CLIENT_ACCESS_POLICY, ClientAccessPolicy.class);
and having the route defined like the code below. In this one localhost ie
127.0.0.1 is allowed to post. This code was written back in the early days of
restlet 2 so might be a bit out of date now.
import java.io.IOException;
import java.util.logging.Level;
import org.apache.log4j.Logger;
import org.restlet.data.MediaType;
import org.restlet.ext.xml.DomRepresentation;
import org.restlet.representation.Representation;
import org.restlet.representation.Variant;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class ClientAccessPolicy extends ServerResource {
private static final String LOGGER_NAME = "org.mortbay.log";
private static Logger logger =
Logger.getLogger(ClientAccessPolicy.class);
@Get("xml")
public Representation accessAllowed(Variant variant) {
logger.info("client access");
if (MediaType.TEXT_XML.equals(variant.getMediaType())) {
try {
DomRepresentation representation = new
DomRepresentation(
MediaType.TEXT_XML);
// Generate a DOM document representing the
list of
// items.
Document d = representation.getDocument();
Element accesspolicy =
d.createElement("cross-domain-policy");
d.appendChild(accesspolicy);
Element crossdomainaccess = d
.createElement("allow-access-from");
crossdomainaccess.setAttribute("domain",
"127.0.0.1");
crossdomainaccess.setAttribute("secure",
"false");
accesspolicy.appendChild(crossdomainaccess);
d.normalizeDocument();
// Returns the XML representation of this
document.
return representation;
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
Cheers,
Ian
On 29 Mar 2011, at 22:33, Jason Richards wrote:
> I have been trying to do a JSON post request with jquery to a restlet
> service. Every the post is attempted it shows up on the server as an HTML
> Options request with an error of 405. From what I have read this is a problem
> with Cross Domain scripting. How do you do a post to the restlet built in
> server with javascript or jQuery?
>
> ------------------------------------------------------
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2715100
Ian Dunlop
myGrid Team
School of Computer Science
University of Manchester
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2715572