使用Ajax发送JSON字符串数据至Servlet问题指南(踩坑)

本文讲述了前端使用Ajax发起请求时遇到的跨域问题,包括预检请求的处理、JSON字符串传递导致的服务器处理问题。解决方法包括调整数据类型以避免预检请求,以及正确解析和提取服务器接收到的JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置

前端:Ajax 请求
后端:Servlet
浏览器:edge

踩坑问题

1.跨域问题

在服务器端已添加响应头
在这里插入图片描述

预检请求状态为200,但是post请求不通过
在这里插入图片描述

2.服务器处理问题

将JSON字符串传递到后端,使用request.getParameter(" ")方法提取不到数据。

解决方案

1.跨域问题

当ajax传出的数据类型为’application/json’(即JSON字符串类型) 时,会附带提交预检请求
在这里插入图片描述

但如果传出的数据类型为对象,则不会提交预检请求,且会直接通过
在这里插入图片描述

抓包显示未提交预检请求,且post请求通过
在这里插入图片描述

所以问题原因在预检请求,下面我们看预检请求具体细节
在这里插入图片描述

我们看到响应表头中并未出现我们先前添加的Access-Control-Allow-Origin,问题原因暂未找到,直接提供解决方法(较为暴力) 。

使用edge中的插件CORS Unblock
在这里插入图片描述

其功能为:将更改浏览器收到的每个请求的“Access-Control-Allow-Origin”和“Access-Control-Allow-Methods”标头来绕过“XMLHttpRequest”和“fetch”拒绝。

也就是为我们自动添加标头,以解决标头添加失败问题。

启动插件后:
在这里插入图片描述
在这里插入图片描述
可见,预检请求的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值