response

cors跨域中关于access-control-allow-headers导致的错误

倖福魔咒の 提交于 2020-03-07 19:42:27
cors.png 1、详细错误信息是: Access to XMLHttpRequest at '[http://appservice.wogame-dev.com/h5/game/getCdkDetail](http://appservice.wogame-dev.com/h5/game/getCdkDetail)' from origin '[http://app.wogame-dev.com](http://app.wogame-dev.com)' has been blocked by CORS policy: Request header field wg-token is not allowed by Access-Control-Allow-Headers in preflight response. 抓包查看http请求和响应,发现已允许跨域。说明跨域设置是成功了,只是HTTP Header缺少了一个字段,导致的报错。 11_30_08__12_07_2018.jpg 2、这里贴出java源码: import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context

异步请求fetch之初体验

有些话、适合烂在心里 提交于 2020-03-07 14:26:01
更好阅读体验可移步我的博客: Blog 导读 传递信息到服务器,从服务器获取信息,是前端发展的重中之重,尤其是现在前后端分离的大前提下,前后端的数据交互是前端的必修科目了。从很久之前到现在,ajax都是每个前端入行者必须技能。当然为了便于开发者, 各种三方工具将ajax包装,然后给开发者使用,jquery、axios等等。这都不是今天的重点, 今天要说一个JavaScript原生的获取资源接口 Fetch API, 虽然各大浏览器支持率不高,但是这样的一个概念确实值得了解学习,并且现在我们可以通过polyfill来实现不同浏览器的兼容性问题 Fetch 先来看看各个浏览器对fetch的原生支持情况,可以看到支持性并不是很高,safari在10.1 之后才支持,ios更是10.3之后才支持,IE完全不支持。当然新技术的发展总会经历这个过程。不过,想提前尝尝鲜也是可以的我们可以使用 polyfill 声明:以下的所有代码测试都是基于 Chrome 实现 废话不多说, fetch 返回的是一个Promise,我们先来看一个基本的 fetch 结构 fetch(url, option).then( res => { //do something }).catch(err => { //do something }) fetch 的url 参数是必须的,option参数可选

JSP与Servlet之间传值

萝らか妹 提交于 2020-03-07 13:36:03
JSP与Servlet之间传值 Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp;使用request、response对象完成传值,具体实现如下: 1.JSP传值给Servlet JSP传值给Servlet有几种形式: Form表单传值,url传值,其他方式传值 a、form表单传值: JSP页面有:<input type="radio" name="staffdepartment" value="1" id="department1" />,将department的id传到Sevlet 中,在程序中如下:ServletRequest request;String staffdepartment=request. getParameter (" staffdepartment ");可获取jsp传的department,但要获取id还要进行转化:int int_staffdepartment=Integer.parseInt(staffdepartment); b、url传值 比如这里的 <a>标签的 href属性与 <form>标签的 action属性的值 "JspServlet? action=toServlet ",在 servlet同样用 request. getParameter (" action ")获取; c

ajax请求后台,response.sendRedirect失效,无法重定向

╄→гoц情女王★ 提交于 2020-03-07 08:30:06
今天在写项目的时候,想加一个切换用户,需要清除session并且跳转到登录页面,发起一个ajax请求后,执行完发现无法跳转。 原因在于: (从网上摘录) Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了。所以浏览器端是不会发起重定向的。 1)正常的http url请求,只有浏览器和服务器两个参与者。浏览器端发起一个http请求,服务器端处理后发起一个重定向,浏览器端从response中获取到重定向地址,发起另一个http url请求。也就是说,浏览器会按照response中的内容进行响应(如重定向),这是浏览器的功能决定的就得响应。 2)Ajax请求,参与者就有三个即ajax、客户端、服务器,ajax处于客户端和服务器两者之间。过程是客户端发起一个ajax请求,服务器端处理后,如果发起一个重定向,然后ajax会怎么办呢?它只会获取刚才请求返回的数据,其他的任何动作一概不去做,ajax是这么做的(ajax功能就是这么设定的,ajax框架源代码也是这么写的)。 也就是说,引入了ajax之后,ajax就插在浏览器和服务器之间了,服务器给浏览器的response被ajax拦截了,但是ajax本身却什么都不做,也不转达。 解决方法: 1.后台做完清除session后,传一个值给前台判断,在前台进行页面的跳转。 后台: @RequestMapping("

python爬取网页时response.status_code返回418,文件读取写入

怎甘沉沦 提交于 2020-03-07 07:04:53
问题: response.status_code为418 问题描述: 当我使用Python的requests爬取网页时response和soup都是None,检查后发现response.status_code为418 错误描述: 经过网上查询得知,418的意思是被网站的反爬程序返回的,网上解释为,418 I’m a teapot The HTTP 418 I’m a teapot client error response code indicates that the server refuses to brew coffee because it is a teapot. This error is a reference to Hyper Text Coffee Pot Control Protocol which was an April Fools’ joke in 1998. 翻译为:HTTP 418 I’m a teapot客户端错误响应代码表示服务器拒绝煮咖啡,因为它是一个茶壶。这个错误是对1998年愚人节玩笑的超文本咖啡壶控制协议的引用。 解决办法: 当时用了requests库,没有添加请求头等信息,可能被反爬程序识别了,再次请求添加了header的User-Agent信息就可以了。 代码: import requests headers={'User-Agent

elasticsearch transport 请求发送和处理

这一生的挚爱 提交于 2020-03-07 06:07:33
前一篇分析对nettytransport的启动及连接,本篇主要分析transport请求的发送和处理过程。cluster中各个节点之间需要相互发送很多信息,如master检测其它节点是否存在,node节点定期检测master节点是否存储,cluster状态的发布及搜索数据请求等等。为了保证信息传输,elasticsearch定义了一个19字节长度的信息头HEADER_SIZE = 2 + 4 + 8 + 1 + 4,以'E','S'开头,接着是4字节int信息长度,然后是8字节long型信息id,接着是一个字节的status,最后是4字节int型version。所有的节点间的信息都是以这19个字节开始。同时elasticsearch对于节点间的所有action都定义 了名字,如对master的周期检测action,internal:discovery/zen/fd/master_ping,每个action对应着相应的messagehandler。接下来会进行详分析。 首先看一下request的发送过程,代码在nettytransport中如下所示: public void sendRequest(final DiscoveryNode node, final long requestId, final String action, final TransportRequest

Node.js 创建第一个应用

▼魔方 西西 提交于 2020-03-06 17:12:37
我们可以使用以下命令来查看当前的 Node 版本: node -v 接下来创建我的第一个node.js应用 server.js var http=require("http");//引入http模块 //创建服务器 http.createServer(function(request,response){ //发送http头,状态200:ok,类型:text/plain response.writeHead(200,{"Content-Type":"text/plain"}); //发送响应数据 response.end("hello cyy"); }).listen(8888);//监听8888端口 console.log("look at localhost:8888"); 使用 node 命令执行以上的代码: 浏览器上的页面 来源: https://www.cnblogs.com/chenyingying0/p/12427515.html

django之中间件

℡╲_俬逩灬. 提交于 2020-03-06 16:39:50
中间件介绍 什么是中间件 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。 但是由于其影响的是全局,所以需要谨慎使用,使用不当会影响性能。 说的直白一点中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定的时间去执行这些方法。 我们一直都在使用中间件,只是没有注意到而已,打开Django项目的Settings.py文件,看到下图的MIDDLEWARE配置项。 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

day68 Django--中间件

本小妞迷上赌 提交于 2020-03-06 16:38:09
一,中间件介绍   1.什么是中间件?     中间件是一个用来处理Django的请求和响应的框架级别的钩子(函数)。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。     但是由于其影响的时全局,所以需要谨慎使用,使用不当会影响性能。     中间件事帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定时间去执行这些方法。      2.Django项目中的settings.py文件的MIDDLEWARE配置项: 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

OkHttp的用法小结

折月煮酒 提交于 2020-03-06 12:42:27
创建OkHttpClient对象 OkHttpClient client = new OkHttpClient ( ) ; 这种方式创建,设置都是default 如果要设置超时时间,比如读取的超时时间,可以使用newBuild()方法设置 OkHttpClient client = new OkHttpClient ( ) . newBuilder ( ) . readTimeout ( 5 , TimeUnit . SECONDS ) //此处设置了读取超时时间,五秒钟 . build ( ) ; //调用build()来返回一个OkHttpClient对象 创建Request对象 创建 Request 和 RequestBody 对于 GET 方法,我们不需要RequestBody,参数直接加在URL上传值就行了。 后台比如spring boot可以使用@RequestParam(“参数名”)的方式拿到。 我们这样使用OkHttp框架的 Request Request request = new Request . Builder ( ) . url ( url ) . get ( ) . build ( ) ; 这里我们在url传入要请求的网址,方法选择GET 如果我们要使用 POST 方法,就需要 RequestBody 来传递参数了 JSONObject sender =