response

python Django 中间件介绍

天涯浪子 提交于 2020-03-05 17:13:53
我们一直都在使用中间件,只是没有注意到而已,打开Django项目的Settings.py文件,看到下面的MIDDLEWARE配置项,django默认自带的一些中间件: MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'utils.middlewares.MD1', 'utils.middlewares.MD2'] 我们之前已经接触过一个csrf相关的中间件了?我们一开始让大家把他注释掉,再提交post请求的时候,就不会被forbidden了,后来学会使用csrf

JavaWeb Filter

Deadly 提交于 2020-03-05 17:12:06
1. 过滤器概述 1.1. 什么是过滤器 Filter 译为过滤器,是 JavaWeb 的三大组件之一,用于在 Servlet 之外对 Request 或者 Response 进行修改。对于 Web 应用程序来说,过滤器是一个驻留在服务器端的 Web 组件,它可以截取客户端和服务器端之间的请求与响应信息。 1.2. 发展历史 由于 Servlet 规范是开放的,借助于公众与开源社区的力量, Servlet 规范越来越科学,功能也越来越强大。 2000 年, Sun 公司在 Servlet2.3 规范中添加了 Filter 功能,并在 Servlet2.4 中对 Filter 进行了细节上的补充。目前主流版本为 Servlet2.5 的 Filter 。 1.3. 运行原理 Servlet 是服务器端用于处理客户端的请求与响应的,而 Filter 就是介于客户端与服务器端拦截客户端的请求或服务器端的响应,并对其修改或过滤。具体实现流程如下: 当客户端向服务器端发送一个请求时,如果有对应的过滤器进行拦截,过滤器可以改变请求的内容、或者重新设置请求协议的相关信息等,然后再将请求发送给服务器端的 Servlet 进行处理。当 Servlet 对客户端做出响应时,过滤器同样可以进行拦截,将响应内容进行修改或者重新设置后,再响应给客户端浏览器。在上述过程中

HTTP 请求,POST方式,把一个对象序列化成JSON样式作为参数访问服务器

。_饼干妹妹 提交于 2020-03-05 16:17:02
public static string Login(Login login) { HttpWebRequest request; WebResponse response; string remoteAddress = ConfigurationManager.AppSettings["remoteAddress"]; string LoginServiceName = ConfigurationManager.AppSettings["LoginServiceName"]; byte[] bytes = Encoding.Default.GetBytes(string.Format("{0}@{1}:{2}", login.userid, login.factory, login.password)); string userNamePass = Convert.ToBase64String(bytes); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Login)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, login); var json = Encoding.UTF8.GetString(ms

Cookie和Session

丶灬走出姿态 提交于 2020-03-05 13:34:36
Cookie 将用户相关的信息保存在客户端 客户端每次访问服务器都会自动携带cookie的数据 Cookie cookie = new Cookie(name, value); response.addCookie(cookie); 什么是会话Cookie 保存在浏览器内中的属于会话cookie 特点:关闭浏览器的时候就会清楚cookie 什么是持久会话cookie 数据保存客户端硬盘上 通过setMaxAge 设置为持久 Cookie的有效路径 cookie.setPath(“/work”); 删除cookie cookie.setMaxAge(0); cookie.setPath(“/work”); response.addCookie(cookie); //request.getRequestDispatcher(“/pro.jsp”).forward();//转发 response.sendRedirect(“/work/pro.jsp”);//重定向 有效域名 访问sina的时候,设置cookie.setDomain(“.baidu.com”); 这是第三方cookie,是不安全的。一般浏览器都不接受。 访问sina时候,生成的cookie,cookie.setDomain(.sina.com.cn); 这个是第一方cookie ---------------------

springboot第一天

风流意气都作罢 提交于 2020-03-05 08:16:39
@ResponseBody的作用其实是将java对象转为json格式的数据。 @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。 注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。 @ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】。 注意:在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。 后台 Controller类中对应的方法: @RequestMapping("/login.do") @ResponseBody public Object

我爱Java系列---【注册案例】

好久不见. 提交于 2020-03-05 07:44:54
一、注册案例分析 二、实施流程 1.创建数据库web01,用户表user 代码: CREATE DATABASE web01; USE web01; CREATE TABLE USER( uid INT PRIMARY KEY AUTO_INCREMENT, userName VARCHAR(32), PASSWORD VARCHAR(32) ); 2.在idea中创建User类 public class User { int uid; String userName; String passWord; public int getUid() { return uid; } public String getUserName() { return userName; } public String getPassWord() { return passWord; } public void setUid(int uid) { this.uid = uid; } public void setUserName(String userName) { this.userName = userName; } public void setPassWord(String passWord) { this.passWord = passWord; } @Override public

动手实现Hyperf中间件

喜欢而已 提交于 2020-03-05 07:03:39
Hyperf的中间件跟Java中的FilterChain类似,其作用是在调用controller之前对请求对象进行拦截,进行某些操作,再传递给下一个中间件或者直接返回输出响应。如Hyperf手册中所示,中间件是一个 洋葱模型 ,其实现原理就是一个递归调用,代码思路如下: <?php interface MiddlewareInterface{ public function process(Response $response,RequestHandler $requestHandler); } class Middleware1 implements MiddlewareInterface{ public function process(Response $response,RequestHandler $requestHandler){ echo "Middleware1 before.<br/>"; $requestHandler->handle($response); echo "Middleware1 after.<br/>"; return $response; } } class Middleware2 implements MiddlewareInterface{ public function process(Response $response

sofa-bolt源码阅读(3)-通信模型

对着背影说爱祢 提交于 2020-03-05 03:44:49
Bolt提供了四种通信模型,分别是 Oneway , Sync , Future , Callback asynchronous 4.1 Oneway oneway单向通话 特点 不关心返回值 发送请求就立即返回 com.alipay.remoting.BaseRemoting#oneway protected void oneway(final Connection conn, final RemotingCommand request) { try { conn.getChannel().writeAndFlush(request).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture f) throws Exception { if (!f.isSuccess()) { logger.error("Invoke send failed. The address is {}", RemotingUtil.parseRemoteAddress(conn.getChannel()), f.cause()); } } }); } catch (Exception e) { if (null == conn) { logger.error("Conn

爬虫性能

我怕爱的太早我们不能终老 提交于 2020-03-05 01:47:02
这里我们通过请求网页例子来一步步理解爬虫性能 当我们有一个列表存放了一些url需要我们获取相关数据,我们首先想到的是循环。 简单的循环串行 这一种方法相对来说是最慢的,因为一个一个循环,耗时是最长的,是所有的时间总和 代码如下: import requests url_list = [ 'http://www.baidu.com', 'http://www.pythonsite.com', 'http://www.cnblogs.com/' ] for url in url_list: result = requests.get(url) print(result.text) 通过线程池 通过线程池的方式访问,这样整体的耗时是所有连接里耗时最久的那个,相对循环来说快了很多 import requests from concurrent.futures import ThreadPoolExecutor def fetch_request(url): result = requests.get(url) print(result.text) url_list = [ 'http://www.baidu.com', 'http://www.bing.com', 'http://www.cnblogs.com/' ] pool = ThreadPoolExecutor(10) for

Django----中间件详解

旧时模样 提交于 2020-03-04 22:49:53
Django----中间件详解 阅读目录(Content) Django中间件 自定义中间件 中间件(类)中5种方法 中间件应用场景 回到顶部(go to top) Django中间件 在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。 Django1.9版本以后中间件的执行流程 1、执行完所有的request方法 到达视图函数。 2、执行中间件的其他方法 3、经过所有response方法 返回客户端。 注意:如果在其中1个中间件里 request方法里 return了值,就会执行当前中间件的response方法,返回给用户 然后 报错。。不会再执行下一个中间件。 Django 1.9版本之前,如果在request方法中遇到return,会执行最后一个中间件的response方法,然后依次回传 回到顶部(go to top) 自定义中间件 1.在project下随便创建一个py文件 View Code 2、在setings文件中 注册这个 py文件 django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件 View Code 执行结果 为啥报错了呢? 因为 自定义的中间件response方法没有return,交给下一个中间件