Java 对飞行前请求的响应不';t通过访问控制检查:否';访问控制允许原点';标题已存在。服务器错误
我在前端使用angular js,在后端使用java hibernate。几天前,我的网站运行得非常好,但最近我对表格结构做了一些更改。在这些更改之后,当我尝试集成angular js时,我遇到了以下错误消息 XMLHttpRequest无法加载localhost:8080/SignInMainServlet。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“localhost:3000” 我读了一些关于飞行前请求和头部权限的内容,但所有可能的解决方案都失败了 我有一个索引页面,它有一些get请求,当我最初加载页面或稍后刷新页面时,它工作得非常好。但只要我调用post请求SignInMainServlet,错误就会弹出。在此之后,当我刷新我的页面时,get请求都不起作用,并且显示相同的错误 这是我的发帖要求Java 对飞行前请求的响应不';t通过访问控制检查:否';访问控制允许原点';标题已存在。服务器错误,java,angularjs,networking,cors,jetty,Java,Angularjs,Networking,Cors,Jetty,我在前端使用angular js,在后端使用java hibernate。几天前,我的网站运行得非常好,但最近我对表格结构做了一些更改。在这些更改之后,当我尝试集成angular js时,我遇到了以下错误消息 XMLHttpRequest无法加载localhost:8080/SignInMainServlet。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“localhost:3000” 我读了一些关于飞行前请求和头部权限的内容,但所有可能的
return $http({
method: 'POST',
url: 'http://localhost:8080/SignInMainServlet',
data: $httpParamSerializerJQLike({
login_source: source,
accessToken: code,
referrer_code: referral_id
}),
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' }
});
他的请求的服务器端是:
String referrer_code=request.getParameter("referrer_code");
String login_source=request.getParameter("login_source");
String accessToken=request.getParameter("accessToken");
SignInMainManager m = new SignInMainManager(accessToken, referrer_code, login_source,REFERRAL_CODE_COUNT);
String result = m.signIn();
response.setContentType("text/html");
response.addHeader("Access-Control-Allow-Origin","*");
response.addHeader("Access-Control-Allow-Methods"," GET, POST, OPTIONS");
response.addHeader("Access-Control-Allow-Headers","Content-Type");
PrintWriter out = response.getWriter();
out.println(result);
out.close();//closing the stream
我在发送请求时监视了网络,并获得以下信息:
概述
请求URL:localhost:8080/SignInMainServlet
请求方法:选项
状态代码:200 OK
远程地址:127.0.0.1:8080
响应标题
允许:GET、HEAD、POST、TRACE、选项
内容长度:0
日期:2017年2月5日星期日10:49:56 GMT
服务器:Jetty(8.1.14.v20131031)
请求标题
接受:/
接受编码:gzip、deflate、sdch、br
接受语言:英语GB,英语US;q=0.8,en;q=0.6
访问控制请求头:授权
访问控制请求方法:POST
连接:保持活力
主机:本地主机:8080
来源:localhost:3000
推荐人:本地主机:3000/
用户代理:Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/55.0.2883.87 Safari/537.36我创建了这个过滤器,现在它可以处理所有请求
package com.your.package;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
@WebFilter(asyncSupported = true, urlPatterns = { "/*" })
public class Filter implements javax.servlet.Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
((HttpServletResponse) response).addHeader("Access-Control-Allow-Origin", "*");
((HttpServletResponse) response).addHeader("Access-Control-Allow-Methods", "GET, OPTIONS, HEAD, PUT, POST");
((HttpServletResponse) response).addHeader("Access-Control-Allow-Headers", "Content-Type");
((HttpServletResponse) response).addHeader("Access-Control-Max-Age", "86400");
// pass the request along the filter chain
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
如果您使用的是web.xml,则可以遵循以下步骤。
我想知道您是否尝试过中概述的方法