Google AppEngine 中带有 Java 和 Angular.js 的 OPTIONS 方法的 404
404 for OPTIONS method in Google AppEngine with Java and Angular.js
我在 Java 上使用 Angular.js 和 AppEngine。
对于每个 HTTP 请求,Angular.js 在实际请求之前发出一个 OPTIONS 请求,这 returns 对我来说是一个 HTTP 404 错误。
谁能告诉我为什么?
在 AppEngine 中如何启用 OPTIONS 方法的配置?
编辑: 我创建了一个过滤器来处理 OPTIONS 请求。现在我添加 Allow header 和 GET, POST, DELETE, PUT, OPTIONS, HEAD 作为值并响应状态代码 200。但是还是显示404.
终于成功了。
我这样写代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
HttpServletRequest req = (HttpServletRequest) request;
resp.setHeader("Cache-Control", "max-age=3600");
resp.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
resp.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
resp.setHeader("Access-Control-Allow-Origin", "www.myapp.com");
resp.setHeader("Access-Control-Allow-Credentials", "true");
if (req.getMethod().equals("OPTIONS")) {
resp.flushBuffer();
} else {
chain.doFilter(request, resp);
}
}
我刚刚写了 resp.setHeader("Access-Control-Allow-Origin", "*");前。
写完所有的headers,就开始工作了。
我在 Java 上使用 Angular.js 和 AppEngine。
对于每个 HTTP 请求,Angular.js 在实际请求之前发出一个 OPTIONS 请求,这 returns 对我来说是一个 HTTP 404 错误。
谁能告诉我为什么?
在 AppEngine 中如何启用 OPTIONS 方法的配置?
编辑: 我创建了一个过滤器来处理 OPTIONS 请求。现在我添加 Allow header 和 GET, POST, DELETE, PUT, OPTIONS, HEAD 作为值并响应状态代码 200。但是还是显示404.
终于成功了。 我这样写代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
HttpServletRequest req = (HttpServletRequest) request;
resp.setHeader("Cache-Control", "max-age=3600");
resp.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
resp.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
resp.setHeader("Access-Control-Allow-Origin", "www.myapp.com");
resp.setHeader("Access-Control-Allow-Credentials", "true");
if (req.getMethod().equals("OPTIONS")) {
resp.flushBuffer();
} else {
chain.doFilter(request, resp);
}
}
我刚刚写了 resp.setHeader("Access-Control-Allow-Origin", "*");前。 写完所有的headers,就开始工作了。