AndServer icon indicating copy to clipboard operation
AndServer copied to clipboard

允许浏览器跨域请求AndServer

Open ouyangbei opened this issue 4 years ago • 7 comments

ouyangbei avatar Sep 18 '20 09:09 ouyangbei

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.";
        }

        ...
    }

yanzhenjie avatar Oct 09 '20 08:10 yanzhenjie

2.1.6版本已经支持了@CrossOrigin注解来支持跨域,和SpringMVC的@CrossOrigin特性完全对齐,欢迎大家试用哦,有问题请在这里继续回复。

yanzhenjie avatar Oct 20 '20 15:10 yanzhenjie

@CrossOrigin注解来支持跨域 没有效果?

sunjianfenggit avatar Jul 26 '22 11:07 sunjianfenggit

请问一下,是否支持外网访问,现在是需要客户端和服务端是在同一个局域网,或者相同形式连接同一个网络,比如WiFi,那么客户可以访问到服务端; 如果服务端的网络和客户端或者浏览器的网络都不一样,浏览器无法访问服务端,也就是网络IP都不一样的时候不可以访问,能否支持网络不一样,也能连接服务器呢?”

SmallRedSister avatar Mar 02 '23 03:03 SmallRedSister

请问一下,是否支持外网访问,现在是需要客户端和服务端是在同一个局域网,或者相同形式连接同一个网络,比如WiFi,那么客户可以访问到服务端; 如果服务端的网络和客户端或者浏览器的网络都不一样,浏览器无法访问服务端,也就是网络IP都不一样的时候不可以访问,能否支持网络不一样,也能连接服务器呢?”

@SmallRedSister 支持,你的问题不在于软件框架,而在于网络搭建。所有的网络都是局域网,公司/家里的路由器下是小局域网,所以路由器下的设备能互相访问,如果想支持跨公司/家访问,就是在国家/世界这个大局域网下了,也就是你说的外网,这个外网的路由器是电信运营商(更准确说是根服务器,为方便理解,简化到运营商),所以你需要去运营商那里搞定一个固定ip,这个固定ip的分配给你的设备,然后网线头直接连接你手机,你手机就能被外网通过ip访问了(需要域名的话,买个域名解析到该ip即可)。(当然,现实中中网线头肯定是连接路由器/锚的,然后通过路由器设置重定向到局域网的某个子ip上)。

yanzhenjie avatar Mar 02 '23 10:03 yanzhenjie

@yanzhenjie 感谢您的回复,我悟了,开始觉得好玩起来了~

SmallRedSister avatar Mar 03 '23 05:03 SmallRedSister

外部服务器的网页访问Android website提供的本地资源怎样解决跨域问题啊

liujiacheng666 avatar Oct 13 '23 13:10 liujiacheng666