No' Access-Control-Allow-Origin' header - Springboot

时间:2018-01-11 22:09:14

标签: jquery spring-boot gulp cross-domain allow-same-origin

当我尝试访问springboot restservice时出现以下错误:

"无法加载http://localhost:8080/Lerneinheit:对预检请求的响应未通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:8081'因此不允许访问。响应的HTTP状态代码为403。"

我google了很多,并将其添加到我的RestController类:" @CrossOrigin(起源=" http://localhost:8081")"

@CrossOrigin(origins = "http://localhost:8081")
@RestController
@RequestMapping("/Lerneinheit")
public class LerneinheitController {

    @Autowired
    LerneinheitRepository lerneinheitRepository;


    @RequestMapping(method=RequestMethod.GET)
    public List<Lerneinheit> getAllLerneinheiten(){
        List<Lerneinheit> lerneinheiten = new ArrayList<Lerneinheit>();
        for(Lerneinheit l : lerneinheitRepository.findAll())
            lerneinheiten.add(l);

        return lerneinheiten;
    }

这是我访问数据的jQuery代码:

var data = {}
    data["query"] = $("#query").val();

    $.ajax({
        type : "POST",
        contentType : "application/json",
        url : "http://localhost:8080/Lerneinheit",
        data : JSON.stringify(data),
        dataType : 'json',
        timeout : 100000,
        success : function(data) {
            console.log("SUCCESS: ", data);

        },
        error : function(e) {
            console.log("ERROR: ", e);

        },
        done : function(e) {
            console.log("DONE");
        }
    });

服务器在端口8080上运行,我的客户端页面正在运行&#34; gulp-live-server&#34;:&#34; 0.0.31&#34;在8081港口。

我尝试了很多,如果有人可以帮助我,那真的很酷。

欢呼声, JohnRamb0r

1 个答案:

答案 0 :(得分:-1)

有多种方法可以解决此跨域请求问题: link

许多方法之一是在你的情况下使用类似下面的JSONP:

$.ajax({
    url: http://localhost:8081/Lerneinheit,
    dataType: "jsonp",
    jsonp: "callback",
    success: function( response ) {
        /* fetch the response and do the processing */

        };
    }
});

删除 - @CrossOrigin(origins = "http://localhost:8081")