JSONP 跨域

题目1: 什么是同源策略

答:

  • 协议相同 (http https ftp file ...)

  • 域名相同 (域名是第一个//到第一个/之间的部分)

  • 端口相同 (默认端口是80)
    满足以上即为同源。

  • 同源策略: 同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。

题目2: 什么是跨域?跨域有几种实现形式

答:
跨域:不满足以上同源条件,即请求跨域。

ajax不能跨域

实现跨域的四个方法: JSONP、CORS、降域、PostMessage

题目3: JSONP 的原理是什么

答:
JSONP,网页通过添加一个

服务器端:

    router.get('/test', function(req, res) {
        var callback = req.query.cb
        var data = '"this is jsonp"'   
        res.send(callback+ '(' + data + ')') //返回了foo(data),浏览器端就当js代码执行调用foo(data)
    })

题目4: CORS是什么

答:
跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。

浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段(协议 + 域名 + 端口)。
服务器可以指定对哪些Origin字段的请求进行响应。

浏览器端:

    

服务器端:

    router.get('/test', function(req, res) {
        console.log('req!')
        res.header('Access-Control-Allow-Origin',"*")
        res.send(['this is cors'])
    })

题目5: 根据视频里的讲解演示三种以上跨域的解决方式

答:

JSONP和CORS见题目3、4。

PostMessage实现跨域:

a.html

    

b.html

    

降域实现跨域:

假设 a.jrg.com 和 b.jrg.com 要相互访问数据,用以下方法可以降域到jrg.com,实现跨域。

document.domain = 'jrg.com';

你可能感兴趣的:(JSONP 跨域)