Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax CORS过滤器Tomcat 7不工作_Ajax_Tomcat_Tomcat7_Cors - Fatal编程技术网

Ajax CORS过滤器Tomcat 7不工作

Ajax CORS过滤器Tomcat 7不工作,ajax,tomcat,tomcat7,cors,Ajax,Tomcat,Tomcat7,Cors,我试图在$CATALINA_BASE/conf/web.xml文件中实现基本的CORS过滤器。这是我的过滤器: <filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> </filter> <filter-mapping> <

我试图在$CATALINA_BASE/conf/web.xml文件中实现基本的CORS过滤器。这是我的过滤器:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
以下是我的AJAX请求:

function MethodOne() {
$.ajax({
    type: "GET",
    url: "http://localhost:8080/crossDomain",
    crossDomain: true,
    success: function(response) {
        $('#result').html(response);
    }   
});
}
和我的请求/响应标题:

Remote Address:[::1]:8080
Request URL:http://localhost:8080/crossDomain
Request Method:GET
Status Code:302 Found
Request Headersview source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:3000
Referer:http://localhost:3000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36    (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36
Response Headersview source
Date:Thu, 29 Jan 2015 15:19:00 GMT
Location:http://localhost:8080/crossDomain/
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked

任何帮助都将不胜感激。我有一种感觉,我没有以正确的方式发送请求,但真的不知道。

我也遇到了同样的问题。我不得不扔掉过滤器。增加

request.getHeader("Origin");
在响应头中。这为我解决了问题

另一个解决方案是检查它是否是飞行前请求。然后必须补充:

Request.ok().build();
但我想最好的解决方案是在浏览器中禁用web安全

对于我使用的Chrome:

--disable-web-security 

如果您的
web.xml
具有其他具有dispatcher详细信息的筛选器,如

 <dispatcher>REQUEST</dispatcher>
 <dispatcher>INCLUDE</dispatcher>
 <dispatcher>FORWARD</dispatcher>
请求
包括
向前地
然后CORS过滤器没有对我起作用

然而,下面的过滤器映射实现了这一点

<filter-mapping>
    <filter-name>CORS Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

CORS过滤器
/*
向前地
FORWARD
是一种魔力


希望这能帮助你的朋友

我有一个非常类似的问题,但我的问题在飞行前选项请求中失败了403。它解决了我的问题,但它没有维护我的会话。有什么方法可以让我也维护会话吗
<filter-mapping>
    <filter-name>CORS Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>