我一直在这个问题上工作了好几天。 我是一名开发人员,对这些事情的了解是非常有限的,在这个公司里还没有人能够帮助我解决这个问题。 这真的必须得到解决,因为它遇到阻塞问题。
我们正在运行带有Apache安装的AS / 400来部署REST服务。 我不知道很多技术细节,但信息报告"Apache server <servername> - Apache/2.4.2 (IBM i)" 。
问题是CORS:当使用PUT / DELETE时,预检OPTIONS请求被发送到服务器。 响应返回200 OK ,但不返回像Access-Control-Allow-Origin *这样的CORS头。 因为这个(我认为)真正的请求没有执行,浏览器返回一个CORS错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Web服务被configuration为返回这个头,但是不可能为OPTIONS请求返回这个头。
我试图configurationApache,所以它总是返回这个头,但它不起作用。 无论我添加哪个头,都不会返回到浏览器。
我的httpd.conf:
LoadModule mod_ibm_lwi /QSYS.LIB/QHTTPSVR.LIB/QLWIIHSMOD.SRVPGM HotBackup Off KeepAlive Off DocumentRoot /www/WS_REST_BE/htdocs AddLanguage en .en LogMaint logs/error_log 7 0 LogFormat "%h %T %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined Listen *:10043 <Location /> AllowOverride All Require all granted Header set Access-Control-Allow-Origin "*" </Location> LoadModule was_ap20_module /QSYS.LIB/QHTTPSVR.LIB/QSVTAP24.SRVPGM WebSpherePluginConfig /www/WS_REST_BE/conf/ias-plugin-cfg.xml <LwiProfile WS_REST_BE> LwiAssignUserID WEBSBEPRD LwiAutostartOption StartEnd LwiStartJobQueue QHTTPSVR/QZHBHTTP HTTPWWW </LwiProfile> AddCharset UTF-8 .html .js AddDefaultCharset utf-8
我已经尝试在configuration中的不同位置设置标题,但它不起作用。 IBM的文档清楚地表明mod_headers是支持的(应该启用它)。
我希望这里有人能指导我解决这个问题的正确方向。
注意:如果我需要提供更多信息,请随时询问!
我自己开发REST服务,但是我使用JavaEE中的拦截器将CORS头部实现到了响应中。 你的错误信息指出
请求的资源上没有“Access-Control-Allow-Origin”标题。
,它引用POST / DELETE请求afaik。 尝试将CORS头添加到POST / DELETE答案。
请参阅参考: http : //www.developerscrappad.com/1781/java/java-ee/rest-jax-rs/java-ee-7-jax-rs-2-0-cors-on-rest-how-到化妆REST的API访问的-从-A-不同的域
据我所知,Apache不应该是问题,而是REST服务。 另见: https : //en.wikipedia.org/wiki/Cross-origin_resource_sharing#How_CORS_works