【发布时间】:2012-01-08 08:15:34
【问题描述】:
我已经配置了 Jetty 的跨域过滤器,但我仍然收到以下错误。有谁知道出了什么问题以及如何解决?错误消息下方是我的覆盖描述符(即补充 web.xml)
错误:
Origin http://localhost:8090 is not allowed by Access-Control-Allow-Origin.
覆盖描述符:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
<init-param>
<param-name>allowedOrigins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedMethods</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedHeaders</param-name>
<param-value>*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>cross-origin</filter-name>
<filter-pattern>/*</filter-pattern>
</filter-mapping>
</web-app>
请求标头
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:Origin, Content-Type, Accept
Access-Control-Request-Method:POST
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:8090
Referer:http://localhost:8090/home
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.942.0
响应标头
Allow:POST,GET,OPTIONS,HEAD
Content-Length:0
Date:Wed, 30 Nov 2011 02:13:21 GMT
Server:Jetty(7.5.4.v20111024)
【问题讨论】:
-
您可以使用像 Wireshark 这样的工具来显示正在交换的实际请求/响应标头吗?这将有助于验证是否发送了正确的 CORS 标头。
-
@monsur:我添加了请求/响应标头详细信息。响应头不包含
access-control-allow-origin: * -
嗯,不确定。您可以检查日志以查看过滤器是否正在记录任何内容?过滤器设置了一个记录器:download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/…
-
@monsur:过滤器似乎没有记录任何内容。使用以下命令:
mvn jetty:run &> ~/mvn-jetty.log,我将 stdout 和 stderr 重定向到日志文件。我搜索了日志文件,没有提到跨源过滤器。
标签: java ajax cross-domain jetty cors