一般跨域请求访问时遇到的问题解决

一般跨域请求访问时遇到的问题解决

  • 前几天遇到一个特别傻的问题,看到浏览器所有的访问都是通过cookie控制权限的,我尝试在公司内跨域访问一个内部接口,接口名和请求参数都可以从浏览器访问时看到,于是就把在代码中设置cookie,添加要访问网页的token/user_token 但是添加后依然返回的是token not found ,当时我明明是传了token的,但是为什么访问不了 难道是公司内的系统配置了接口调用权限?
  • 带着这个问题 我去百度查了一下 在后端代码访问跨域接口需要的就是网页的token ,但是cookie的信息不只token一个 还有domain和path,所以最终的代码是这样的
  • 下面展示一些 内联代码片
        JSONObject result = new JSONObject();
        CookieStore cookieStore = new BasicCookieStore();
        CloseableHttpClient httpClient = HttpClients.custom()
                .setDefaultCookieStore(cookieStore)
                .build();
        try {
            HttpPost post = new HttpPost(url);
            // 添加参数
            post.setEntity(new UrlEncodedFormEntity(pairList, "utf-8"));
            // 设置cookies
            BasicClientCookie cookie = new BasicClientCookie("token", token);
            cookie.setDomain("10.20.18.100");
            cookie.setPath("/");
            cookieStore.addCookie(cookie);
            // 通过请求对象获取响应对象
            HttpResponse response = httpClient.execute(post);
            // 拿到返回的对象(0--200都数正常)
            result = JSON.parseObject(EntityUtils.toString(response.getEntity(), "utf-8"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
如果不给cookie中存domain和path值,cookie会不知道去哪放token,导致识别不到。至于domain的含义,在这篇文章里写的非常全面
cookie的domain属性.
上一篇:Django SESSION_COOKIE_DOMAIN 使用


下一篇:计算机网络-DNS(Domain Name System)