美文网首页
ajax跨域请求(SpringMVC)

ajax跨域请求(SpringMVC)

作者: Vetterige | 来源:发表于2016-04-08 13:19 被阅读0次

    什么是跨域

    不同协议 不同域名 不同子域 不同端口 均为跨域
    特别的:一个域名和其对应的ip地址也算跨域
    具体见下表


    跨域请求无效

    默认情况下,比如在localhost:63342下使用ajax请求localhost:8800

     $.get("http://localhost:8080/api/getProducts")
    

    会发生错误:

    XMLHttpRequest cannot load http://www.baidu.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.
    

    解决方案

    只介绍一种解决方案
    在http Response header中加入“Access-Control-Allow-Origin”字段,其值设置为发起请求的域名;或者*,表示所有域名都可以跨域对此域名进行访问

    函数参数中加入HttpServletResponse
    调用其setHeader函数,在header中加入相应字段
    代码如下

    @ResponseBody
    @RequestMapping(value={"api/getproducts.json"})
    public String getProducts(HttpServletResponse responce){
        responce.setHeader("Access-Control-Allow-Origin","*");
        return JSON.toJSONString(productService.findAllProducts());
    }
    

    还有其他解决方案,比如使用jsonp,在此不做介绍

    相关文章

      网友评论

          本文标题:ajax跨域请求(SpringMVC)

          本文链接:https://www.haomeiwen.com/subject/reevlttx.html