IBM JAX-RS 1.1 处理 Dojo Ajax OPTIONS 请求

Posted

技术标签:

【中文标题】IBM JAX-RS 1.1 处理 Dojo Ajax OPTIONS 请求【英文标题】:IBM JAX-RS 1.1 handling Dojo Ajax OPTIONS request 【发布时间】:2012-11-29 22:46:18 【问题描述】:

我目前正在通过 WAS 7 和 Web 2.0 Feature Pack 1.1.0.0 试验 IBM JAX-RS 功能。我遇到的问题是客户端 Dojo ajax 调用造成 CORS 情况,我基本上是想弄清楚如何正确处理 OPTIONS 请求。

我按照引用的 url 中的示例进行操作(虽然它适用于 WAS 8,但它不应该影响我正在玩的部分);但是,据报道系统找不到任何支持OPTIONS的方法。

任何帮助将不胜感激!

参考网址:http://www14.software.ibm.com/webapp/wsbroker/redirect?version=matt&product=was-base-iseries&topic=twbs_jaxrs_wadl_serving

【问题讨论】:

【参考方案1】:

虽然不到一天,但由于我没有看到任何回复,所以我想发布我目前拼凑的临时解决方案。

首先,请查看以下来自 Mozilla 的链接,以更好地了解 CORS 和 OPTIONS 请求(它对我有用)。

链接:https://developer.mozilla.org/en-US/docs/HTTP_access_control

接下来,关于 IBM JAX-RS 处理 OPTIONS 问题的更新。看来 OPTIONS 请求的处理方式与其他 GET/POST 没有什么不同,它需要与 @Path 值完全匹配。这并不是真正需要的,就我而言,我在@Path 值中尝试了通配符,但这并没有起到触发系统处理 OPTIONS 的作用。

现在,解决方案。毫不奇怪,我最终使用过滤器将 OPTIONS 请求转发到资源中的方法,该方法使用 @OPTIONS 注释并固定 @Path 值,例如@Path("选项")。

在过滤器中,我正在处理 Allow-Origin 和 Allow-Header,然后我将资源的 @OPTION 方法留给处理 Allow-Methods。

这是非常简单和基本的解决方案。除了在过滤器内部进行适当的检查外,不需要为每个请求添加过多的标头。

这里有个问题,它适用于 Chrome(版本 23.0.1271.95 m)和 Mozilla(9.0.1),但不适用于 IE。我仍在试图弄清楚 IE 是如何响应这些 CORS 的。希望这会有所帮助。

【讨论】:

以上是关于IBM JAX-RS 1.1 处理 Dojo Ajax OPTIONS 请求的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.0 - 控制 Dojo 层

IBM Worklight 6.0 - Dojo 库在部署后使用 localhost

IBM Worklight 5.0.6 - 无法添加外部 Dojo 组件(需要 Dojo Dgrid 时出现脚本错误)

IBM Worklight - 部署 dojo 应用程序时出现 dojo script.js:21 错误

IBM 表单设计器并使 jQuery 与 Dojo 一起工作

IBM Worklight 和 Dojo 移动