网络协议

网络协议 Day16 跨域、Cookie、Session

2021-01-24  本文已影响0人  望穿秋水小作坊

一、跨域、前后端分离

1.为了展示跨域问题,我们需要建立一个具有 web 功能的 java 项目,了解下面的创建步骤。
步骤②图示 步骤④图示 步骤⑤图示 步骤⑥图示 步骤⑧图示 步骤⑨图示 步骤⑩图示
2. 简述上述的主要过程?(4 个主要过程)
3. 继续完善上述项目 ①UserServlet 返回一个 Json 串; ②index.html 中使用ajax(异步请求)UserServlet 的数据
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("application/json; charset=UTF-8");
        StringBuilder sb = new StringBuilder();
        /*
        [
            {"name": "lsp1", "age": "11"},
            {"name": "lsp2", "age": "12"},
            {"name": "lsp3", "age": "13"},
            {"name": "lsp4", "age": "14"}
        ]
         */
        sb.append("[");
        sb.append("{\"name\": \"lsp1\", \"age\": \"11\"},");
        sb.append("{\"name\": \"lsp2\", \"age\": \"12\"},");
        sb.append("{\"name\": \"lsp3\", \"age\": \"13\"},");
        sb.append("{\"name\": \"lsp4\", \"age\": \"14\"}");
        sb.append("]");
        response.getWriter().write(sb.toString());
    }
<body>
<button id="load-btn">显示用户数据</button>
<table>
    <tr>
        <th>用户名</th>
        <th>年龄</th>
    </tr>
</table>
<script src="js/jquery.min.js"></script>
<script>
    $('#load-btn').click(() => {
        // AJAX请求(异步请求)
        $.getJSON('http://localhost:8080/cors/users', (users) => {
            const $table = $('table')
            for (const user of users) {
                const $tr = $('<tr>')
                $tr.append($(`<td>${user.name}</td>`))
                $tr.append($(`<td>${user.age}</td>`))
                $table.append($tr)
            }
        })
    })
</script>
</body>
运行效果图
4. 上述代码可以正常拿到数据,也没有出现跨域访问。但是在实际开发中,大部分情况下项目是 前后端分离的,这就导致前端服务器 != 后端服务器,接下来我们造一个前后端分离的项目。
前后端分离 跨域错误
5. 同源策略是谁的?什么是同源策略?
同源策略
6. 被同源策略阻止的请求,这个请求有到达服务器吗?
7.说几个不受同源策略约束的标签?
8. 一般情况解决同源是前端解决,还是后端解决?
9. 跨域判断:主要看请求头的哪个参数相应头哪个参数
10. 服务端如何解决跨域访问?
// 服务端设置CORS(允许别人能够跨域访问)
response.setHeader("Access-Control-Allow-Origin", "http://localhost:63342");
跨域访问

二、Cookie Session

1. 一般情况下,我们登录一个(需要登录的)网站的过程如下
image.png
2.如果要做到服务器能知道该用户是否登录过,从而做判断,应该怎么办?
3. 什么是 Cookie?什么是 Session?(从存在哪里,谁能控制两个方面回答)
4. 使用 cookie 和 session 技术标识用户状态的流程
image.png
5.简述下面代码做了哪三件事情?
HttpSession session = request.getSession();
session.setAttribute("username", username);
session.setAttribute("password", password);
6. 默认情况下 Cookie 存在的时间?
上一篇 下一篇

猜你喜欢

热点阅读