跨域问题出现的原因:js的同源问题导致的,跨域可以请求但是返回值不被浏览器解析。
解决思路:jsonp方式,把结果通过构造函数的方式把数据以get绑定到url后发送给浏览器,视图层在URL截取数据,动态构造展示数据。
在被跨的web层加允许跨域的http的head设置,造成跨域成功。
在ajax请求不跨域,到后端后端通过httpClient跨域间接实现跨域
利用nginx反向代理,实现跨域
一、在每个模块拦截请求校验token时,需要跨域访问认证中心,使用的时httpClient
这种方式产生了两次请求,效率低,但内部请求,抓包工具无法分析,安全。
注解方式:
二、在索要跨域的web层加
@CrossOrigin(origins = “http://domain2.com”, maxAge = 3600)
origins : 允许可访问的域列表
maxAge:准备响应前的缓存持续的最大时间(以秒为单位)。
代码方式:
response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问
response.addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式
三、ajax跨域可以用jsonp
jsonp 只支持get请求不支持post请求
用法:①dataType改为jsonp ②jsonp : “jsonpCallback”————发送到后端实际为http://a.a.com/a/FromServlet?userName=644064&jsonpCallback=jQueryxxx ③后端获取get请求中的jsonpCallback ④构造回调结构
$.ajax(