您的位置:首页 > Web前端 > JavaScript

使用Access-Control-Allow-Origin 进行跨域POST、GET请求(非JSONP)

2017-05-25 17:37 387 查看
以下为struts2 配置下,ajax接口输出 response

reponse headr进行如下设置

发起ajax请求的地址 origin 可由 document.origin得到,

Access-Control-Allow-Origin 设置为 * ,则认为对所有 origin开放,

若设置为指定值,则只对指定origin开放,

例:如设置为 http://aaa.com,则此跨域只接受 http://aaa.com 站下发起的ajax请求

请求如下:

$.ajax({
url:"http://localhost:8010/activities/prize/searchShopInfoByName?keyword=%E5%B0%8F%E8%82%A5%E7%BE%8A",
dataType:'json',
processData: false,
type:'get',
data:"{}",
success:function(data){
alert(1);
//code
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}});

cors跨域时,所有ajax请求方式与同域请求一致,并非jsonp的请求形式,在chrome的network中也可看出,请求的initiator为 xmlHttpRequest;
jsonp 的为 script,即 <script> 请求。



HttpServletResponse response = ServletActionContext.getResponse();
response.setHeader("Access-Control-Allow-Origin", "http://event.dianping.com");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setContentType("text/plain;charset=UTF-8");
PrintWriter writer = null;
try {
writer = response.getWriter();
} catch (IOException ex) {
logger.error("call Response.getWriter() failed", ex);
return;
}

try {
writer.write(content);
}catch (Exception e){
logger.error(e);
}finally {
if(writer != null){
try {
writer.close();
}catch (Exception e){
logger.error(e);
}
}
}


springmvc 同理或可以使用 mvc cors注解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: