ColdFusion不处理CFC的HTTP OPTIONS请求
场景:
http://<CF_server>/<app_path>/<CFC>?method=someMethod&...
形式向ColdFusion组件(CFC)发出AJAX请求http://<CF_server>/<app_path>/<CFC>?method=someMethod&...
由于前端和后端位于不同服务器上,因此我们处于CORS(跨源资源共享)环境中,并且AJAX请求向后端发出两个http请求:第一个是用于握手的OPTIONS方法,第二个是POST请求。 我需要在CF服务器上的Apache中启用标头,并使用“Header set Access-Control-Allow-Origin:*”指令来启用CORS,但我希望通过编程方式从CF而不是Apache处理标头。 我运行了一些测试,发现http请求中的OPTIONS方法仅适用于CFM而不适用于CFC,因此第一个AJAX请求(使用OPTIONS方法)失败。 我可以在AJAX调用设置useDefaultXhrHeader属性中绕过OPTIONS请求,但我会理解CF行为。
使用cfhttp标签运行测试后,我发现:
为什么CF在调用CFC时不处理OPTIONS方法?
在我的测试中,我绕过了在端口8500上使用集成的CF网络服务器的Apache。我也尝试过在CF9上使用相同的结果。 相反,Railo具有不同的行为:也处理CFC的OPTIONS方法。
这与没有回应的线程相似:http://www.houseoffusion.com/groups/cf-talk/thread.cfm/threadid:59715
谢谢。
我最近遇到了与CF和Apache CXF相同的问题。
看起来CF对于GET和POST等其他动词没有定义的行为。 就我而言,我在这里安装了CORS过滤器:http://software.dzhuvinov.com/cors-filter-installation.html
拦截这些请求,并在它们使它达到您的应用程序之前处理它们。 它适用于CXF并且适用于CF,但缺点是它需要对web.xml进行更改,这可能不适用于某些托管设置。
另一种选择是配置apache来添加必要的头文件:http://enable-cors.org/server_apache.html
我还发现浏览器供应商在使用OPTIONS调用时存在一些差异。 我不记得具体细节,但如果这是最终的要求,请尽早测试跨浏览器。
链接地址: http://www.djcxy.com/p/74061.html