上周被这个问题搞了好几天
首先,跨域+ajax是可以的,get和post请求在跨域的情况下改动服务端就可以顺利获取数据。
但加上Restful以后,put和delete就始终没能成功。
最初搭建架构打算提供统一的跨平台服务,Restful是最优的选择,但即使改动服务段的前提下,cordova下依然无法通过put和delete传递数据。估计用jsp或者php直接发httprequest是没问题的,但这种方案会增加开发工作量,不利于cordova跨app平台开发,与其这样不如取消Restful来的快。
在网上搜文章,都是Restful同域的情况,不清楚在跨域下究竟可行不可行。
下面贴一段服务端拦截的代码:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, X-Requested-With");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,DELETE,PUT,OPTIONS");
response.setHeader("Allow", "GET,POST,DELETE,PUT,OPTIONS");
response.setHeader("Content-Type", "application/json;charset=utf-8");
response.setHeader("Access-Control-Max-Age","60");
跨域时浏览器通常会得到如下的错误 已阻止交叉源请求:同源策略不允许读取 http://xxx 上的远程资源。可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题。