不同域的页面如何通信(跨域)

  什么是跨域:不符合同源策略,也就是协议、IP、端口有一个不一致就是跨域,从而限制交互行为。

  为什么会出现浏览器跨域限制:避免数据出现安全问题,如果没有跨域限制,可以随意读取任意域名下的cookie,很容易发生CSRF攻击。

  对于浏览器来说,哪些资源会受到同源策略的限制:DOM、cookie、XMLHttpRequest、第三方插件等。

  跨域限制有什么问题:用户无法进行交互行为,上网的意义在何处?

  如何解决跨域问题:
    1、服务器代理:http-proxy-middleware--------原理:服务器之间的请求不存在跨域问题

    2、nginx代理:配置跨域代码  proxy-pass后面跟一个跨域的地址

    3、cors:服务端的代理方式----设置响应头:header(Access-Control-Allow-Origin:*);

    4、jsonP(只支持GET):通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且把我们需要的json数据作为参数传入。

 

  为什么ajax会造成跨域:

    受同源策略的限制,协议、ip、端口有一个不同就是跨域。如果跳转页面了,不存在跨域。ajax是不刷新页面,不进行跳转,所以ajax具有跨域问题。利用cors、服务器代理和nginx代理可以解决。

  jsonP的原理:

    表单中的action、script中的src、a标签和link标签中的href都会造成页面的跳转,所以这不存在跨域的问题。jsonP的原理是利用script的src进行跳转,前端将函数传到服务端,服务端将函数加工后再返回,所以jsonp和ajax不是一回事。

posted @ 2019-07-18 02:03  吴小明-  阅读(1241)  评论(1编辑  收藏  举报