允许跨域ajax携带cookie,jsonp请求带cookie
请求
cookie
跨域
允许
携带
ajax
jsonp
Control
Allow
Access
编程技术
发布日期
2022-09-06
更新日期
2022-09-06
阅读次数 77
文章字数 1.1k
服务器端配置,例如指定一个filter。
其中:
- Access-Control-Allow-Origin设置服务器端的允许响应标记
- Access-Control-Allow-Credentials设置允许跨域携带cookie
- Access-Control-Allow-Headers 和 methods允许预检(跨域请求是一个复杂请求,会触发options预检)
注:仅第二项,是必须的,必须允许携带跨域cookie,第一项请求来源非必须,因为还可以使用 jsonp 的形式,第三项也不是必须(实测服务端禁止options请求仍可请求成功并成功响应)。
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletResponse resp = (HttpServletResponse) response;
HttpServletRequest rep = (HttpServletRequest) request;
//允许任何请求来源
resp.addHeader("Access-Control-Allow-Origin", "*");
//允许跨域请求携带cookie
resp.addHeader("Access-Control-Allow-Credentials", "true");
// 跨域信息
resp.addHeader("Access-Control-Allow-Headers", "*");
resp.addHeader("Access-Control-Allow-Methods", "*");
chain.doFilter(request, response);
}
前端请求时,指定跨域携带cookie(默认不会自动携带)
$.ajax({
url : "*",
type : "GET",
xhrFields : {
withCredentials : true
},
success : function(result){
....
}
});
jsonp请求带cookie示例:
$.ajax({
url : "https://huaz.52dixiaowo.com/api/ajax.php?module=blog&method=getList",
type : "GET",
xhrFields : {
withCredentials : true
},
dataType: "jsonp",
success : function(result){
}
});
请求效果图:
注意事项:新版的chrome,当设置了跨域带 cookie,不再支持 Access-Control-Allow-Origin : * ,必须手动指定域名列表,例如:http://localhost, http://xxx.com
文章作者: 朱丰华
文章链接: https://smart.52dixiaowo.com/blog/post-39.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。
请求
cookie
跨域
允许
携带
ajax
jsonp
Control
Allow
Access
发表评论
相关推荐