1

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

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

任何帮助将不胜感激!

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

4

1 回答 1

0

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

首先,查看下面来自 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("options")。

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

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

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

于 2012-11-30T14:20:47.930 回答