使跨域jquery ajax调用Restful webservice?

时间:2014-03-24 07:25:32

标签: java javascript jquery ajax web-services

我正在使用Jquery Ajax调用来访问REStful webservices,如下所示。 Web服务托管在不同的域中。

   $.ajax({
    type: "GET",
    url: "some url hosted on differnt domain",
    crossDomain: true,
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    success: function(responseJson) {
        alert("json"+responseJson);


    },
    error: function(xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
          alert(err.Message);

    }
});

我不确定它是否没有点击webservice.It会出现错误阻止但没有显示警告。我在这里做错了吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您无法像这样制作跨域请求。它可能会导致跨站点伪造。检查一下 -

http://en.wikipedia.org/wiki/Cross-site_request_forgery

基本上,为了能够这样做,服务器应该允许你这样做。如果您访问跨域服务器上的某些资源。服务器响应该资源的允许用户列表。浏览器读取该列表。如果您未列在该列表中,则浏览器将不会向您显示该资源。

<强>解决方案:

1-你应该控制服务器端。

2 - 您可以在HTML中尝试“脚本”标记以达到您的目的。它们是一个例外。您可以使用“script”标记创建跨域请求,然后将响应解析为json。

3 - Jsonp回调。

我实际上没有详细实现,因为我可以随时控制服务器端。而且,CDN对所有人开放。所以,你现在可能想做一些阅读以了解更多信息。

答案 1 :(得分:0)

您必须更改服务器端的标头http://www.w3.org/TR/cors/#access-control-allow-origin-response-header

因为它会导致伪造。了解http://enable-cors.org/server.html

的更多角色
相关问题