AndServer
AndServer copied to clipboard
允许浏览器跨域请求AndServer
在v2.1.5
以及之前可以这样做:
public class AllowOrigin {
public static void allow(HttpResponse response, HttpMethod... methods) {
String methodHeader = TextUtils.join(",", methods);
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", methodHeader);
response.setHeader("Access-Control-Allow-Headers", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Allow", methodHeader);
}
}
...
@RequestMapping(method = {RequestMethod.PUT, RequestMethod.OPTIONS}, path = "/user/delete")
public String manageCaseInject(HttpRequest request, HttpResponse response) {
HttpMethod method = request.getMethod();
if (method == HttpMethod.OPTIONS) {
AllowOrigin.allow(response, HttpMethod.PUT, HttpMethod.OPTIONS);
return "Allow Any Origin.";
}
...
}
2.1.6版本已经支持了@CrossOrigin
注解来支持跨域,和SpringMVC的@CrossOrigin
特性完全对齐,欢迎大家试用哦,有问题请在这里继续回复。
@CrossOrigin注解来支持跨域 没有效果?
请问一下,是否支持外网访问,现在是需要客户端和服务端是在同一个局域网,或者相同形式连接同一个网络,比如WiFi,那么客户可以访问到服务端; 如果服务端的网络和客户端或者浏览器的网络都不一样,浏览器无法访问服务端,也就是网络IP都不一样的时候不可以访问,能否支持网络不一样,也能连接服务器呢?”
请问一下,是否支持外网访问,现在是需要客户端和服务端是在同一个局域网,或者相同形式连接同一个网络,比如WiFi,那么客户可以访问到服务端; 如果服务端的网络和客户端或者浏览器的网络都不一样,浏览器无法访问服务端,也就是网络IP都不一样的时候不可以访问,能否支持网络不一样,也能连接服务器呢?”
@SmallRedSister 支持,你的问题不在于软件框架,而在于网络搭建。所有的网络都是局域网,公司/家里的路由器下是小局域网,所以路由器下的设备能互相访问,如果想支持跨公司/家访问,就是在国家/世界这个大局域网下了,也就是你说的外网,这个外网的路由器是电信运营商(更准确说是根服务器,为方便理解,简化到运营商),所以你需要去运营商那里搞定一个固定ip,这个固定ip的分配给你的设备,然后网线头直接连接你手机,你手机就能被外网通过ip访问了(需要域名的话,买个域名解析到该ip即可)。(当然,现实中中网线头肯定是连接路由器/锚的,然后通过路由器设置重定向到局域网的某个子ip上)。
@yanzhenjie 感谢您的回复,我悟了,开始觉得好玩起来了~
外部服务器的网页访问Android website提供的本地资源怎样解决跨域问题啊