一、问题分析:

前端与后端协议、域名、端口有一项不同,浏览器依然会请求数据到后端,但不接收后端响应的结果的现象。

二、产生问题的原因:

  1. 用户在浏览器输入的URL中包含的协议、域名、端口都完全相同。如果有一项不同,浏览器会觉得有安全问题,从而产生跨域问题。
  2. 如果使用Postman等开发工具进行交互是不会出现跨域问题,这是浏览器特有的限制。
  3. 在后端服务添加CORS策略的配置就可以解决跨域问题。

三、解决跨域问题具体方案:

  1. 普通Web项目,添加一个crossdomain.xml文件。
  2. Spring项目,添加处理跨域的过滤器或拦截器。
  3. Spring boot项目,在支持跨域的方法上添加@CrossOrigin注解。
  4. Spring boot项目更便捷的方式,实现WebMvcConfigurer接口中的addCorsMappings方法。
  5. Ngnix配置反向代理,例如:用户访问网址为192.168.0.1:80,网页ajax获取192.168.0.1:8080跨域数据,可以在ngnix.conf中配置192.168.0.1:80的server的location /cors/ {proxy_pass http://localhost:8080/user}。此时192.168.0.1:80的网页可以通过192.168.0.1:80/cors/访问到http://localhost:8080/user

标签: none

添加新评论