用反向代理解决CORS问题

时间:2017-09-21 19:28:09

标签: javascript ajax web-services cors

我已经编写了一个用于文档处理的javascript web应用程序。我现在希望能够访问一些Web服务,例如NLTK服务器,TIKA服务器和SOLR,以进行其他处理。

我能够使用curl点击所有这些的REST端点,但是尝试转移到javascript / jquery / Ajax我遇到了许多人在这里问过的同源(CORS)问题。似乎解决方案是建立一个反向代理,虽然我理解这个概念,但我所做的搜索提供的结果远远超出了我的想象。虽然这个问题必须是常见的(Web应用程序点击Web服务),但我必须认为必须有一个简单的解决方案。我是开发人员,而不是系统管理员,并且阅读如何设置Jetty(例如)作为反向代理是一种令人沮丧的练习。如果有人能指出我的“代理101”教程,我会很感激,因为我的google-fu已经缩短了。

************** EDIT ************************

我正在使用嵌入式GlassFish服务器开发Netbeans(我知道它有点矫枉过正,但多年来一直使用它并且很舒服)。所以当执行时,我正在运行localhost:8383。至于我正在打的“服务”,我跑:

java -jar tika-server

启动tika-server监听端口9998(也在localhost上),我可以使用curl提交/检索文档。但是,当我通过ajax向Tika提交文档时,我收到了CORS错误。 我能够打到SOLR服务器,但仅仅因为我修改了AJAX请求以包含:

重量: 'JSON'

因为Solr支持JSONP。但是,我不能假设我想要的每个Web服务都支持JSONP。我正在使用Tika从.pdfs,.docx中提取文本...我在编写Java代码时已经这样做了,只是包含了jar,但是试图转移到Web前端是很困难的。 / p>

1 个答案:

答案 0 :(得分:1)

您可以用单行代码解决cors问题。假设您要启用来自http:// localhost:3000的请求。

java -jar tika-server --cors http://localhost:3000

就是这样。