java - 手动执行 CORS

标签 java ajax tomcat cors

我正在尝试调试我的网络应用程序, 我有一个 POST 请求。 (使用 ajax,使用 xhrFields: { withCredentials: true } )。数据类型是“application/json”,我的服务器是 tomcat,我将“Access-Control-Allow-Origin” header 手动设置为“http://localhost:8080”。

其他标题: response.addHeader("Access-Control-Allow-Credentials", "true"); response.addHeader("Access-Control-Allow-Headers", "x-request-verification-token");

无法让它工作。这是我得到的错误:

跨源请求被阻止:同源策略不允许读取位于 http://localhost:8080/MysServlet 的远程资源. (原因:CORS header “Access-Control-Allow-Origin”与“http://localhost:8080”不匹配)。

提前致谢!

最佳答案

如果您想要一个适用于所有请求的配置,请在您的 web.xml 中添加以下过滤器:

<filter>
    <filter-name>originfilter</filter-name>
    <filter-class>it.damore.web.ApiOriginFilter</filter-class>
</filter>

<filter-mapping> 
    <filter-name>originfilter</filter-name>
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

这是 ApiOriginFilter 类:

 public class ApiOriginFilter implements javax.servlet.Filter {
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse) response;
        res.addHeader("Access-Control-Allow-Origin", "*");
        res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
        res.addHeader("Access-Control-Allow-Headers", "Content-Type");
        chain.doFilter(request, response);
    }

    public void destroy() {
    }

    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

关于java - 手动执行 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653355/

相关文章:

显示警报消息时 Javafx 全屏应用程序会最小化

java - 我可以在哪里使用 jasypt 存储加密 key

java - 多项式算术java等于方法

javascript - 如何在rails应用程序中使用js.erb

jquery - 在 sessionStorage 中存储和检索 ajax xml 响应

java - 实现Runnable接口(interface) 和 继承Thread类

ruby-on-rails - ajax提交后清除text_field

java - 了解 Apache Tomcat 6.0.26 的线程转储

java - Spring boot应用程序-Tomcat部署-无法确定合适的驱动程序类

java - server.port 和 server.context-path 在部署到 tomcat 时不生效