Java 具有基本HTTP身份验证的CORS
我在使用CORS的基本HTTP身份验证时遇到了一些问题:我们有一个node express web服务器(UI),在同一台主机上运行,从Java Dropwizard(Jersey)服务器调用HTTP API API受HTTP基本身份验证保护,我在Jersey服务器上实现了以下过滤器(摘自本文:): 但是,当我尝试加载web UI时,我的控制台会提供以下输出:Java 具有基本HTTP身份验证的CORS,java,jersey,cors,jax-rs,Java,Jersey,Cors,Jax Rs,我在使用CORS的基本HTTP身份验证时遇到了一些问题:我们有一个node express web服务器(UI),在同一台主机上运行,从Java Dropwizard(Jersey)服务器调用HTTP API API受HTTP基本身份验证保护,我在Jersey服务器上实现了以下过滤器(摘自本文:): 但是,当我尝试加载web UI时,我的控制台会提供以下输出: Cross-Origin Request Blocked: The Same Origin Policy disallows readi
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:9000/intraday/parameters. (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘http://localhost:9000’)
我无法理解这个错误。很明显,原点是相同的(),所以我不明白为什么它不匹配
我还确保使用HTTP代码200回答所有预飞选项请求。根据问题中的描述,听起来好像Java Dropwizard(Jersey)服务器正在
http://localhost:9000
并且node express web服务器(UI)正在另一个来源运行
无论如何,您必须将Jersey服务器上的CORSFilter
代码中的Access Control Allow Origin
响应头的值设置为发出请求的前端JavaScript代码的源代码(显然是节点服务器)。所以如果是,例如,http://localhost:12345
,然后:
response.getHeaders().add("Access-Control-Allow-Origin", "http://localhost:12345");
无论如何,它必须不是
http://localhost:9000
,因为您的浏览器不可能发出“不允许读取http://localhost:9000/…
”如果从http://localhost:9000
-因为在这种情况下,它不会是一个跨源请求,您的浏览器也不会阻止对响应的访问。也许这会对您有所帮助:@sascha10000您提供的链接与我的帖子相同在我的问题中已经链接到了。哦,对不起,我没有真正看到这是一个链接。。。
response.getHeaders().add("Access-Control-Allow-Origin", "http://localhost:12345");