我目前正在通过 WAS 7 和 Web 2.0 Feature Pack 1.1.0.0 试验 IBM JAX-RS 功能。我遇到的问题是客户端 Dojo ajax 调用会导致 CORS 情况,我基本上是想弄清楚如何正确处理 OPTIONS 请求。
我按照引用的 url 中的示例进行操作(虽然它适用于 WAS 8,但它不应该影响我正在玩的部分);但是,据报道系统找不到任何支持OPTIONS的方法。
任何帮助将不胜感激!
我目前正在通过 WAS 7 和 Web 2.0 Feature Pack 1.1.0.0 试验 IBM JAX-RS 功能。我遇到的问题是客户端 Dojo ajax 调用会导致 CORS 情况,我基本上是想弄清楚如何正确处理 OPTIONS 请求。
我按照引用的 url 中的示例进行操作(虽然它适用于 WAS 8,但它不应该影响我正在玩的部分);但是,据报道系统找不到任何支持OPTIONS的方法。
任何帮助将不胜感激!
虽然不到一天,但由于我没有看到任何回复,所以我想发布我到目前为止拼凑的临时解决方案。
首先,查看下面来自 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 的。希望这可以帮助。