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…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、现象

从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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UVA – 12001 UVa Panel Discussion

    UVA – 12001 UVa Panel Discussion

    2022年1月3日
    47
  • 大数据_01【介绍】

    大数据_01【介绍】大数据_01【介绍】大数据特点大数据能做什么【海量数据背景下】大数据行业的应用大数据发展前景大数据部门组织结构什么是大数据 指数据集的大小超过了现有典型数据库软件和工具的处理能力的数据大数据特点海量化 数据量从TB到PB多样化 数据类型复杂,超过百分之八十是非结构化的[结构化数据半结构化数据完全非结构化数据]快速化 数据量在持续增加(两位数的增长率),数据处理速度要求高高价值 在海量多样数据的快速分析下能发挥出更高的数据价值大数据能

    2022年5月10日
    42
  • axios实现跨域三种方法_跨域的解决方案

    axios实现跨域三种方法_跨域的解决方案Axios是不允许跨域访问的,别说跨域,跨端口都不行。例如某项目我本地vue前端frontEnd为`localhost:8888`,Java后台backEnd为`localhost:8889`。这个时候就有两个方案了:-修改`frontEnd`前端,支持跨域(通过代理的形式,当然这种是`伪跨域`,但是挺有用,前提是后端不限制即可)。-修改`backEnd`后台,支持跨域(同时限制可跨域名,不在本文讨论范围,且看过往处理方式)。

    2025年11月1日
    4
  • soapclient php 扩展,PHP扩展—SOAP[通俗易懂]

    soapclient php 扩展,PHP扩展—SOAP[通俗易懂]一、概述及安装SOAP扩展可以用于编写SOAP服务器和客户端,支持SOAP1.1,SOAP1.2和WSDL1.1规格的子集。此扩展需要libxmlPHP扩展。这表示需要使用–enable-libxml,尽管这将隐式完成因为libxml是缺省开启的。要开启SOAP支持,配置PHP时要加上–enable-soap.二、相关函数is_soap_fault—…

    2025年6月1日
    2
  • python算法(1)抓交通肇事犯

    python算法(1)抓交通肇事犯抓交通肇事犯1.问题描述一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位

    2022年8月7日
    3
  • Linux makefile 教程 很具体,且易懂

    Linux makefile 教程 很具体,且易懂

    2021年12月1日
    37

发表回复

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

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