我正在学习GWT,我目前面临使用JSONP对特定服务器进行RPC调用的问题。
我要与之通信的服务器提供JSON-RPC服务,要求请求具有{'Content-Type': 'application/json'}
的标头和常规JSON数据的主体,例如:{"params": ["HelloServer"], "method": "server.greeting", "id": 10}
。
我想知道是否可以向此服务器发出JSONP请求,因为我认为JSONP是GWT的SameOriginPolicy限制的唯一变通方法。
编辑:正如Darin Dimitrov所解释的那样,我想我必须坚持使用JSON,因为服务器不提供JSONP服务。建议的SOP解决方法是完美的,也建议here。
答案 0 :(得分:1)
我想知道是否可以向此服务器发出JSONP请求
如果服务器不支持,则不行。以下是为了支持JSONP而需要修改服务器响应的方法:
someCallback({"params": ["HelloServer"], "method": "server.greeting", "id": 10})
其中someCallback
是可由客户端指定的函数的名称。如果您无法控制服务器并且它不支持JSONP,那么您唯一的机会就是在您的域上编写服务器端脚本,作为桥接器。然后,您将向此脚本发送AJAX请求,该脚本将其委派给远程域。