发表于: 2017-06-11 23:21:53

2 955


今天完成的事情:研究了反向代理跨域的问题,实现了nginx的反向代理跨域

明天计划的事情:学习更多关于ajax的内容,完成任务5,开始任务6.

遇到的问题:在反向代理跨域的问题上花了太多的时间。本来5分钟就能搞定的事情,因为这种报错,研究了很久,

结果发现坑在于,每次重启nginx,都是新开了一个nginx窗口,后来任务管理器把所有的10多个nginx的窗口关掉就跨域成功了。

收获:

1.什么是跨域以及产生原因

  跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。

  跨域情况如下:

 

url 说明 是否跨域

http://www.cnblogs.com/a.js

http://www.a.com/b.js 不同域名

http://www.a.com/lab/a.js

http://www.a.com/script/b.js 同一域名下不同文件夹

http://www.a.com:8000/a.js

http://www.a.com/b.js 同一域名,不同端口

http://www.a.com/a.js

https://www.a.com/b.js 同一域名,不同协议

http://www.a.com/a.js

http://70.32.92.74/b.js 域名和域名对应ip

http://www.a.com/a.js

http://script.a.com/b.js 主域相同,子域不同 是(cookie不可访问)

http://www.a.com/a.js

http://a.com/b.js 同一域名,不同二级域名(同上)

 

2.跨域的常见解决方法

目前来讲没有不依靠服务器端来跨域请求资源的技术

  1.jsonp 需要目标服务器配合一个callback函数。

  2.window.name+iframe 需要目标服务器响应window.name。

  3.window.location.hash+iframe 同样需要目标服务器作处理。

  4.html5的 postMessage+ifrme 这个也是需要目标服务器或者说是目标页面写一个postMessage,主要侧重于前端通讯。

  5.CORS  需要服务器设置header :Access-Control-Allow-Origin。

  6.nginx反向代理 这个方法一般很少有人提及,但是他可以不用目标服务器配合,不过需要你搭建一个中转nginx服务器,用于转发请求。

3.本任务的nginx反向代理跨域的配置方法:

1.在nginx的文件夹下的nginx.conf里面的server里面的location下面加上这样的一行代码。

location /carrots-admin-ajax/{ 

proxy_pass http://dev.admin.carrots.ptteng.com/; 

}

2用jq进行ajax配置,我的是这样写的。

$(document).ready(function(){

$(".login-bottom button").click(function(){

var x=$("input[name=username]").val();

var y=$("input[name=password]").val();

console.log(x,y);

console.log(3);

$.ajax({

type:"POST",

url:"/carrots-admin-ajax/a/login",

dataType:"JSON",

data:{name:x,pwd:y},

success: function (data) { console.log(data) }

})

})

})

然后就成功了,这就是任务5的nginx的跨域配置方法


返回列表 返回列表
评论

    分享到