我已经写了一个用于文档处理的javascript web应用程序。我现在希望访问一些web服务,如NLTK-server、TIKA server和SOLR,以进行额外的处理。
我可以使用curl访问所有这些的REST端点,但是在尝试迁移到javascript/jquery/Ajax时,我遇到了许多人在这里询问过的同源(CORS)问题。似乎解决方案是建立一个反向代理,虽然我理解这个概念,但我所做的搜索提供的结果远远超出了我的理解。尽管这个问题很常见(Web应用程序攻击web服务),但我不得不认为必须有一个简单的解决方案。我是一名开发人员,而不是系统管理员,阅读如何将Jetty (例如)设置为反向代理是一项令人沮丧的练习。如果有人能给我指点一下“代理101”教程,我将不胜感激,因为我的google-fu还不够。
*编辑*
我正在使用嵌入式GlassFish服务器在Netbeans中进行开发(我知道这有点过分,但我已经使用它很多年了,而且对它很满意)。所以在执行时,我运行的是localhost:8383。至于我正在点击的“服务”,我运行:
java -jar tika-服务器
它会启动tika-server,侦听端口9998 (也在localhost上),然后我就可以使用curl提交/检索文档了。但是,当我通过ajax向Tika提交文档时,我得到CORS错误。我能够访问SOLR服务器,但这仅仅是因为我修改了AJAX请求以包括:
wt:'json‘
因为Solr支持JSONP。然而,我不能假设我想要访问的每个web服务都支持JSONP。我正在使用Tika从.pdfs,.docx中提取文本...我曾经在编写Java代码时这样做过,并且只包含jar,但是尝试迁移到web前端被证明是困难的。
发布于 2020-11-15 19:49:20
只需一行代码即可解决cors问题。假设您想启用来自http://localhost:3000的请求。
java -jar tika-server --cors http://localhost:3000就这样。
https://stackoverflow.com/questions/46351809
复制相似问题