我正在使用 tomcat 7 在 java (eclipse ee) 中的动态 Web 项目上运行我的 servlet。 我已将以下段落添加到我的 web.xml 文件中(来自 https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter/Introduction ):
<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>"
我正在尝试使用以下 Angular js 代码来使用来自 chrome 的 post 请求:
app.controller("LoginControler", function($scope,$rootScope,$http) {
$scope.submit = function () {
$rootScope.ret = "clicked";
var data = {
CompanyName: $scope.CompanyName,
UserName: $scope.UserName,
Password: $scope.Password,
};
$http.post(URL, data).success(function(data, status) {
$rootScope.ret = data;
})
}
});
并且我不断收到以下错误代码: “XMLHttpRequest 无法加载 http://localhost:8080/Project-FrontEnd/ServletUsers 。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin” header 。因此不允许访问 Origin“null”。响应HTTP 状态代码为 403。”
我尝试了所有能找到的解决方案,但没有帮助...请问有人可以解决我的问题吗?
最佳答案
您需要为 CorsFilter 添加“Access-Control-Allow-Origin”值。现在 Tomcat 说您无法从您的来源访问这里。将其添加到 CorsFilter 配置中:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
//add below config
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
因此,通过此配置,您可以确定允许来自哪些域的请求。您可以添加可以访问您的资源的逗号分隔域,而不是 *。
关于java - 在 TOMCAT 7 servlet 中为发布请求启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091246/