JavaScript 跨域请求

同源策略

浏览器对 XMLHttpRequest 对象的 HTTP 请求,是有范围限制的,这项规定被称为 同源策略。总共有 3条 限制。

1. 域名相同 在 www.jmjc.tech 的页面下请求 jmjc.tech 服务器的内容,是不允许的。

2. 协议相同 https 和 http 也是两个不同的范围区域。

3. 端口相同 默认是 80 端口。


跨域

由于浏览器为了安全规定了 同源策略,绕过同源策略的限制,通常有以下几种办法。

1. flash

2. 在同源域名假设一个代理服务器

3. cors

4. jsonp


CORS

CORS 是一种 白名单机制,CORS 的请求成功与否取决于服务器是否同意当前域的请求,通过在服务器设置允许当前域名请求做到 跨域访问

在服务器的响应头部标示 Access-Control-Allow-Origin:当前域名 or * 。


JSONP

JSONP 的跨域访问是利用了 script 文件的加载,所有只能支持 GET请求,返回过来的是一个 JavaScript 文件

<!-- 通过 script 能跨域加载 javascript 脚本的这一特性 -->
<script src="http://xxx.com?xxx"></script> 

<!-- 假设 http://xxx.com?xxx 加载的内容 -->
<script>
 function f() {
  return 'date' // 返回一个我们需要的数据      
 }
</script>

<!-- 使用数据 -->
<script>
 f() // 'date'
</script>
更多教程 HTML5 教程 CSS3 教程 JavaScript 教程 JQuery 教程 React.js 教程 Node.js 教程 Koa2 教程 Python 教程 Linux 教程