【问题标题】:No response by sending a rest request and getting back status 200 ok发送休息请求并返回状态没有响应 200 ok
【发布时间】:2012-03-02 19:22:40
【问题描述】:

我向服务器发送休息请求并返回状态 200 ok,但响应中没有内容。

$.getJSON("http://192.168.0.94:8084/datasnap/rest/TServerMethods1/ReverseString/sfasda/", function(data) {
  alert(data);
});

我用萤火虫调试了这个,并且是标题:

Connection  close
Content-Length  21
Content-Type    text/html; charset=ISO-8859-1
Pragma  dssession=188802.418847.903604,dssessionexpires=1200000
Request Headers
Accept  application/json, text/javascript, */*; q=0.01
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive
Host    192.168.0.94:8084
Origin  http://192.168.0.92
Referer http://192.168.0.92/visuals/index.php?page=pincodescreen
User-Agent  Mozilla/5.0 (Windows NT 5.2; rv:5.0) Gecko/20100101 Firefox/5.0

我做错了什么?

【问题讨论】:

    标签: jquery rest firebug getjson


    【解决方案1】:

    您正在执行跨域请求,由于 JavaScript same origin policy 而无法执行。您的请求来自http://192.168.0.92 的文档,而目标是http://192.168.0.94:8084/。据我所知,即使是不同的端口也会触发策略,因此无法直接请求数据。

    假设您可以控制第二台服务器,请重写您的请求以使用 JSONP。

    【讨论】:

    • 太糟糕了,我无法控制第二台服务器
    • 可以使用我的浏览器或php来做到这一点,但我想要客户端执行
    • 您可以在您的服务器上放置一个代理脚本。然后,您的客户端将调用此脚本,该脚本又会从远程服务器获取资源并将其转发给您的客户端。然后,客户端可以以任何必要的方式处理数据。对于您的客户来说,只有一台服务器可以与之通信,因此您对相同的源策略没有任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2016-05-11
    相关资源
    最近更新 更多