使用 Spring 3.0.5 和 Jackson 对 Tomcat 发出 JSON PUT 请求时出现 403

2024-03-31

我的 Web 应用程序已开始返回 PUT 请求的 403 错误。但是,我在日志中没有看到此请求的任何调试消息,因此我对如何进一步调试它感到困惑。

该代码曾经可以工作,但最近发生了一些变化: 客户端是 Sencha JS:

Ext.Ajax.request({
        url       : '/RestWAR/personal/trailSegment/' + trailSegment.id + '.json',
        method    : 'PUT',
        headers   : {'Content-Type': 'application/json'},
        jsonData  : segmentDto
});

容器是 Apache Tomcat 6.0。 请求先转到 Spring Security 3.0.0.RC1,然后再转到 Spring 3.0.5。

@Controller
@RequestMapping("/personal")
public class PersonalController {
    @RequestMapping(value = "trailSegment/{trailSegmentId}", method=RequestMethod.PUT)
    public void updateTrailSegment(@PathVariable long trailSegmentId, @RequestBody PersonalTrailSegmentDTO trailSegmentDto) {
    //...
    }
}

近期变动: Spring 版本为 3.0.0.M4,json 库为 net.sf.json-lib 1.0.2。 Spring 现在是 3.0.5,json 库现在是 Jackson Mapper ASL 1.4.2(即 Spring 推荐的)。

GET 和 POST 工作正常。只是 PUT 失败了。

如果涉及 Spring Security,那么我会看到来自 Spring Security 的调试消息,但我什么也看不到。 Tomcat 似乎正在停止该请求。

预先感谢您的任何帮助 - 特别是在调试方面。


我有兴趣看看是否有 解决这个问题,我们遇到了同样的问题 Tomcat 6.0.x 和 Spring 的事情 3.0.1 使用 PUT 和 @RequestParam (我想我们也尝试过 @RequestBody),PUT 与 Jetty 工作正常,但不行 使用 Tomcat,除非您添加 url 的参数为 ?someParam=value。 我们选择通过使用来绕过它 改为发布。

我几分钟前刚刚发表了评论,现在回想起来,当我们点击这个时,我记得我发现了this http://tomcat.markmail.org/message/blc2rhzafde7uwgr?q=Parameters%20disappear%20from%20PUTs#query%3aParameters%20disappear%20from%20PUTs%20page:1%20mid%3adxgvu6fhcvp22xbo%20state%3aresults线 (参数从 PUT 中消失)关于当时的问题。通读它,Tomcat 开发人员似乎将 HTTP 规范解释为 PUT 不应该支持参数:

那么,您确定 PUT 请求吗 实际上承认“参数”?http://www.ietf.org/rfc/rfc2616.txt http://www.ietf.org/rfc/rfc2616.txt, 第 9.6 节

PUT 请求请求将附加实体(在请求正文中)存储在 URI 指示的位置。但我在这里没有看到参数的参考。

-

无论如何,这些都有足够的余地 段落,以证明这一事实 Tomcat 开发人员可能是 有理由不实施任何 PUT 的“参数”处理 要求;而其他开发商 servlet 引擎可能已经感觉到 提供此类处理是合理的。 我想说的是 如果您创建一个应用程序 取决于正在处理的参数 在 PUT 请求中,您可以创建 不可移植的应用程序 到所有 servlet 引擎或 HTTP 服务器。但这当然是你的 选择。

然而这一切都引发了一个问题: 在之前的帖子中,你提到 该请求作为 POST 可以正常工作。为什么 那么你是否坚持将其作为 PUT 发送 ?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring 3.0.5 和 Jackson 对 Tomcat 发出 JSON PUT 请求时出现 403 的相关文章

随机推荐

  • 如何在 R 中解决简单的优化问题

    我试图使用 R 中的 optim 函数来解决一个简单的问题 但我在如何实现它方面面临一些问题 e tot obs sum Var1 sum Var2 sum Var3 sum Var4 output Var1 Var2 Var3 Var4
  • 如何查看 git repo 的接收历史记录?

    我们有一个 中央 存储库 用于部署到我们的开发服务器 我知道git log将向我显示提交及其提交的日期 时间 但我想查看提交何时被推送到存储库 由存储库接收 有办法做到这一点吗 Git s reflogs https git scm com
  • IOS视图变换修改框架?

    我有一个视图 在其中我正在绘制矩形中进行一些特定的绘图 这些绘图是动态的 并且基于视图的宽度和高度 然后 包含它的视图对其应用旋转变换 然而 这种转换似乎调整了我的视图框架的值 这会影响我在drawRect中的绘图 NSLog 之前 f f
  • Windows XP、Vista 和 7 上安装了哪个版本的 .NET Framework?

    我有一个使用 NET Framework 3 5 的应用程序 我正在为一所大学构建这个应用程序来帮助学生学习 大多数学生通常使用Windows XP SP2 Windows Vista或Windows 7 对不起Mac用户 Mac版本将在大
  • 从代码更新 LinearDoubleKeyFrame KeyTime 值

    我有一些像这样的xaml
  • 集群中的用户(会话)计数

    有没有一种好方法可以获取集群中运行的 Java Web 应用程序的登录用户数 我写了一个简单的HttpSessionListener具有静态字段 但我认为这在集群中不起作用 我可以看到有一个 Spring Security 解决方案 但我在
  • 等待完成流的读取请求

    我在用着pngjs https github com niegowski node pngjs读取和写入一些 PNG 我定期收到此错误 Error There are some read requests waiting on finish
  • 节点号 X (RESHAPE) 准备失败。使用 tflite v2.2 调整张量大小

    这是重现错误的简单代码 import os os environ CUDA VISIBLE DEVICES 1 import numpy as np from keras models import Sequential from kera
  • android中JNI调用的命名约定是什么

    例如 在android Java代码中 它调用一个native方法 private native final String native getParameters 我应该在哪里 如何 grep C 方法在哪里定义native getPar
  • 使用子位置在 XSLT 中创建网格

    我正在尝试创建一个如下指定的网格
  • Google Colab 中的检查点

    如何在 Google Colab 上存储经过训练的模型并在本地磁盘上进一步检索 检查站会起作用吗 我如何存储它们并在一段时间后检索它们 您能否提及相关代码 这会很棒 Google Colab 实例是在您打开笔记本时创建的 稍后会被删除 因此
  • 排序组合框 VBA

    我一直在考虑如何对组合框中的值进行排序 我在初始化表单时将项目添加到组合框中 因为工作表上的值数量不断增加 我使用下一个代码来添加项目 With ComboBox1 lastcell ThisWorkbook Sheets 1 Range
  • Angular PrimeNG 表使用 cols 数组每列设置管道

    我正在尝试使用 PrimeNG 学习角度 链接在这里https primefaces org primeng table https primefaces org primeng table 是否还可以使用管道数组包含每列的管道 在 col
  • 从 iTunes 搜索 API(Apple 音乐)获取 ISRC 代码

    Apple 有一个搜索 API 可让您在 iTunes Store 中查询音乐 https affiliate itunes apple com resources documentation itunes store web servic
  • 获取多维访问的线性索引

    我正在尝试实现一个多维 std array 它保存大小为 Dim n 1 Dim n 2 Dim 1 的连续内存数组 为此 我使用 std array 的私有继承 constexpr std size t factorise std siz
  • Delphi - 获取应用程序打开了哪些文件

    如何使用 Delphi 获取应用程序打开的文件的列表 例如 winword exe 打开哪些文件 使用原生API函数NtQuery系统信息 http msdn microsoft com en us library ms724509 28V
  • 如何在子资源中添加 HATEOAS 链接

    我有一个名为 管理资源 的父资源和一个名为 管理模块资源 的子资源 父级资源已正确安装 HATEOAS 链接 firstname Stephane lastname Eybert email email protected cdn cgi
  • 在带有nodejs的azure函数应用程序中使用SSL证书

    我将 pfx 证书上传到我的函数应用程序 如何加载此证书以便在我的 Nodejs 代码中使用它 如果我把它放在项目目录中 我就可以使用它并且它工作正常 但我想避免将它放在项目中 Thanks 在Azure门户中 您可以按照下图上传您的私有证
  • 我的功率谱可信吗? lomb-scargle 和 fft 之间的比较(scipy.signal 和 numpy.fft)

    谁能指出为什么我得到截然不同的结果 有很多不应该出现的峰 事实上 应该只有一个峰 我是一个 python 新手 欢迎对下面我的代码发表所有评论 测试数据在这里 在此输入链接描述 https clbin com YJkwr您可以直接wget
  • 使用 Spring 3.0.5 和 Jackson 对 Tomcat 发出 JSON PUT 请求时出现 403

    我的 Web 应用程序已开始返回 PUT 请求的 403 错误 但是 我在日志中没有看到此请求的任何调试消息 因此我对如何进一步调试它感到困惑 该代码曾经可以工作 但最近发生了一些变化 客户端是 Sencha JS Ext Ajax req