bootoption没有启动项_javacontinue的用法

bootoption没有启动项_javacontinue的用法一、现象从fetch说起,用fetch构造一个POST请求。1fetch(‘http://127.0.0.1:8000/api/login’,{2method:”POST”,3headers:({4’Content-Type’:’application/x-www-form-urlencoded’5}),6body:”name=”+name…

一、现象

从fetch说起,用fetch构造一个POST请求。

1 fetch(‘http://127.0.0.1:8000/api/login’, {2 method: “POST”,3 headers: ({4 ‘Content-Type’: ‘application/x-www-form-urlencoded’

5 }),6 body: “name=” + name + “&password=” +pwd7 }).then((res) = >{8 console.log(res.status);9 returnres.json()10 }).then((data) = >{11 //console.log(data.result)

12 let loginResult =data.result13 if (loginResult == ‘ok’) {14 dispatch(getSuccess(data.list)) browserHistory.push(‘/index’)15 } else{16 console.log(“illegal login in !”)17 }18 }).19 catch((e) = >{20 console.log(e.message)21 })

调用的API服务是Spring boot开发的。

这个POST发出去,一切正常。

由于业务需要,我增加一个头字段:Authorization。

fetch请求的代码修改如下:

1 …2

3 headers: ({4 ‘Content-Type’: ‘application/x-www-form-urlencoded’,5 ‘Authorization’: ‘1111111222’

6 }),7 body: “name=” + name + “&password=” +pwd8 }).then((res) = >{9

10 …

问题出现了,服务器收到一个OPTIONS请求?!

二、原因

这是fetch出于安全性考虑做的一次服务器预查询,而我的服务没有做相应的处理,所以业务处理失败了。

三、解决

方法一:

网上查到的最多的说法就是:

在application.properties文件中增加这一行配置:

spring.mvc.dispatch-options-request=true

遗憾的是,我的环境配置没有生效。

方法二:

手动写一个Filter:

0 @Component

1 public classCorsFilter implements Filter {2 @Override3 public voidinit(FilterConfig filterConfig) throws ServletException {4 //TODO Auto-generated method stub

5 }6

7 @Override8 public voiddoFilter(ServletRequest req, ServletResponse res,9 FilterChain chain) throws IOException, ServletException {10 HttpServletResponse response =(HttpServletResponse) res;11 response.setHeader(“Access-Control-Allow-Origin”, “*”);12 response.setHeader(“Access-Control-Allow-Methods”,13 “POST, GET, OPTIONS, DELETE”);14 response.setHeader(“Access-Control-Max-Age”, “3600”);15 response.setHeader(“Access-Control-Allow-Headers”,16 “Content-Type, x-requested-with, X-Custom-Header, Authorization”);17 chain.doFilter(req, res);18 }19

20 @Override21 public voiddestroy() {22 //TODO Auto-generated method stub

23 }24 }

一点说明:

response.setHeader(“Access-Control-Allow-Headers”, “Content-Type, x-requested-with, X-Custom-Header, Authorization”);

配置中的Authorization是和请求中自定义的头部字段是一样的。

通过这个过滤器,fetch后续的POST请求就可以顺利的发出了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226207.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Docker启动mysql服务「建议收藏」

    Docker启动mysql服务「建议收藏」1:确保自己的服务器已经安装好了docker输入dockerinfo或者dockerversion2:然后我们去dockerhub去下载自己的想要的mysql镜像找到offic的版本,点击进入3:经命令放入linux中执行。[root@iZ2zehajf73atd9gbz1qdbZredisconf]#dockerpullmysql:5.64:然后检测自己是否下载成功:dockerimages5:dockerrun–name…

    2022年10月6日
  • Pycharm 搜索功能大全「建议收藏」

    Pycharm 搜索功能大全「建议收藏」目录Ctrl+N按文件名搜索py文件Ctrl+shift+N按文件名搜索所有类型的文件ctrl+shift+f全局字符串搜索ctrl+shift+a双shift搜索Ctrl+N按文件名搜索py文件ctrl+n可以搜索py文件勾选上面这个框可以搜索工程以外的文件Ctrl+shift+N按文件名搜索所有类型的文件Ctrl+shift+N可以搜索…

    2022年8月26日
  • 视频服务器搭建流媒体_个人服务器搭建

    视频服务器搭建流媒体_个人服务器搭建
    什么样的情况下才使用FMS?有以下几种情形的时候,你可能需要用到FMS
    1、需要通过FlashPlayer播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候。渐进式下载就是仍然走http协议,youtube,土豆等站点就是。那么什么时候才真正需要用到流视频呢?
    1)视频文件超过100MB或超过10分钟,用户有seek需求的时候
    2)视频文件不需要被下载的时候,rtmp如果不行,可以试试rtmpe
    3)视频流需要多

    2022年10月20日
  • 零基础学Java(1)初识Java程序「建议收藏」

    零基础学Java(1)初识Java程序「建议收藏」前言就国内来说,Java毫无疑问是后端语言中的No.1没有之一,所以今天我们也来0基础学习Java!!!Java的好处(针对测试工程师)面试加分->涨薪大多数公司服务端用的都是Java,

    2022年7月29日
  • JS生成guid方法

    JS生成guid方法

    2022年4月2日
  • 如何把本地项目上传到Github

    如何把本地项目上传到Github

    2021年10月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号