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

以下为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注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值