Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

允许浏览器跨域请求AndServer #305

Open
ouyangbei opened this issue Sep 18, 2020 · 7 comments
Open

允许浏览器跨域请求AndServer #305

ouyangbei opened this issue Sep 18, 2020 · 7 comments

Comments

@ouyangbei
Copy link

No description provided.

@yanzhenjie
Copy link
Owner

yanzhenjie commented Oct 9, 2020

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 yanzhenjie changed the title 你好跨域问题怎么解决啊? 传递参数时跨域阻拦了,不传递参数没事 2.1.5版本之前怎么允许浏览器跨域请求AndServer? Oct 9, 2020
@yanzhenjie
Copy link
Owner

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

@yanzhenjie yanzhenjie changed the title 2.1.5版本之前怎么允许浏览器跨域请求AndServer? 允许浏览器跨域请求AndServer Oct 20, 2020
@yanzhenjie yanzhenjie pinned this issue Oct 20, 2020
@sunjianfenggit
Copy link

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

@SmallRedSister
Copy link

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

@yanzhenjie
Copy link
Owner

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

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

@SmallRedSister
Copy link

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

@liujiacheng666
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants