- 跨域只是针对ajax请求的。
- 如果产生跨域,那么将请求不到数据。
- 发起ajax请求所依赖的html页面的url地址中的(协议,域名,端口)和(ajax中的目标url协议,域名,端口)必须一模一样,则是同源。
- 不符合同源策略的ajax请求都会产生跨域问题。
解决方案
1.jsonp
服务端返回一段js代码,浏览器端用script的src属性请求。
没法处理post请求。
前端封装jsop方法:
function jsop(url,fn){
var callback = 'callback' ; //这是要给服务器端的函数名
window[callback] = fn;
//创建script标签,并设置src属性
var oScript = document.createElement('script')
oScript.src= url+ '?callback=' + callback
document.body.appendChild(oScript)
}
jsop('http://localhost:9000/list',function(data){
//data
})
服务器node端

2.使用反向代理解决跨域问题
ajax向本服务器发起请求(肯定不会跨域),由本服务器向目标服务器转发该请求,并得到数据,再返回给客户端。
http.get



3.跨域资源共享
在9000服务器中加响应头
res.set( 'Access-Control-Allow-Origin', ' * ' )
代表所有的 “权限控制” 都允许通过。
然后就不用在请求7000服务器了,直接可以请求9000服务器。
网友评论