【Javascript】搞定JS面试——跨域问题
- 什么是跨域?
- 为什么不能跨域?
- 跨域的解决方案都有哪些(解决方法/适用场景/get还是post)?
二、为什么不能跨域?
浏览器有一个同源策略,用来保护用户的安全。
如果没有这个策略的话,a网站就可以操作b网站的页面,这样将会导致b网站的页面发生混乱,甚至信息被获取,包括服务器端发来的session。
三、跨域的解决方案
1、JSONP
| 解决方法 |
0)浏览器是可以引入不同域下的JS文件,利用这个特性,来实现跨域。 1)直接在a.com页面,添加一个script标签,src属性为b网站的页面url, 并且传入一个callback参数。 <script> 2)b网站的handlerData.php,实际做的操作就是:生成一段可执行的 JS代码,调用你传入的dosomething函数。 |
| 应用场景 | 常用的解决方案 |
| 请求方式 | get :它本质上是下载一个资源文件。 |
2、document.domain
| 应用场景 |
必须满足两个条件 1)页面中嵌入firame框架。 2)当前页面和iframe中的页面,主域、协议、端口必须完全一致。 |
| 解决方法 |
比如页面地址是http://a.baidu.com/,嵌入的iframe是 http://b.baidu.com/ 分别设置页面和iframe的document.domain为: baidu.com,就可以解决问题。 |
3、使用H5中的window.postMessage
| 解决方法 |
window.postMessage(message,targetOrigin) 方法是html5新引进的特性,可以使用它来向其它 的window对象发送消息,无论这个window对象是属于同源或不同源,目前IE8+、FireFox、Chrome、 Opera等浏览器都已经支持window.postMessage方法。 |
| 应用场景 |
1)页面和其打开的新窗口的数据传递 2).多窗口之间消息传递 3).页面与嵌套的iframe消息传递 |
4、CORS方案
| 解决方法 |
CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用 向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可。 header("Access-Control-Allow-Origin", "*");
|
| 应用场景 | 跨域post提交数据 |
| 请求方式 | post |
| 参考链接 |
详细介绍请查看: |
【Javascript】搞定JS面试——跨域问题的更多相关文章
- 搞定所有的跨域请求问题 jsonp CORS
网上各种跨域教程,各种实践,各种问答,除了简单的 jsonp 以外,很多说 CORS 的都是行不通的,老是缺那么一两个关键的配置.本文只想解决问题,所有的代码经过亲自实践. 本文解决跨域中的 ge ...
- 【JavaScript】--重点解析之跨域请求
JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON是用字符串来表示Javascript对象,例如可以在django中发送一个JSON格式 ...
- js执行跨域请求
//js执行跨域请求 var _script = document.createElement('script'); _script.type = "text/javascript" ...
- js调用跨域
web aapi 初体验 解决js调用跨域问题 跨域界定 常见跨域: 同IP不同端口: http:IP:8001/api/user http:IP:8002/api/user 不同IP不同 ...
- js&jquery跨域详解jsonp,jquery并发大量请求丢失回调bug
URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http:/ ...
- JS JSOP跨域请求实例详解
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题.这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下 ...
- react-native debug js remotely跨域问题
react-native debug js remotely跨域问题 我们在安卓真机上调试react-native时,启用debug js remotely的时候,会出现跨域问题.这个时候我们只需要一 ...
- js解决跨域问题
JavaScript中的常见解决跨域的方法 1. 通过jsonp跨域 1.)原生实现: 2. document.domain + iframe跨域 此方案仅限主域相同,子域不同的跨域应用场景. 1.) ...
- JS Ajax跨域访问
js ajax跨域访问报"No 'Access-Control-Allow-Origin' header is present on the requested resource 如果请求的 ...
随机推荐
- Ueditor实现自定义conttoller请求或跨域请求
http://www.th7.cn/Program/java/201507/510254.shtml
- Java中正则表达式的几种用法
多数内容转载自:http://www.jb51.net/tools/regex.htm ,有改动 用到了java.util.regex包: 1. 验证 Pattern pattern = Patter ...
- Prolog 外部不能有 DOCTYPE 声明。处理资源 'http://192.168.115.152:8082/api/EmpApi.aspx' 时出错。第 3 行,位置: 11
在Default.aspx代码中删除以下代码(其他窗口也是这样删除): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- c#中Partial关键字的作用
1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许我们将一个类.结构或接口分成几个部分,分别实现在几个不同的.cs文件中. 局部类型适用于以下情况: (1) 类型特别大,不宜放在 ...
- 深入理解Java Proxy
深入理解Java Proxy: http://blog.csdn.net/rokii/article/details/4046098 整理之后的代码: package com.stono.reftes ...
- 制作一个功能丰富的Android天气App
简易天气是一个基于和风天气数据采用MD设计的Android天气App.目前的版本采用传统的MVC模式构建.通过丰富多彩的页面为用户提供日常所需的天气资讯. 项目说明 项目放在github上面 地址是: ...
- 一次dns缓存引发的惨案
时间2015年的某个周六凌晨5点,公司官方的QQ群有用户反馈官网打不开了,但有的用户反馈可以打开,客服爬起来自己用电脑试了一下没有问题,就给客户反馈说,可能是自己网络的问题,请过会在试试.早点8点,越 ...
- 全球分布式数据库:Google Spanner(论文翻译)
本文由厦门大学计算机系教师林子雨翻译,翻译质量很高,本人只对极少数翻译得不太恰当的地方进行了修改. [摘要]:Spanner 是谷歌公司研发的.可扩展的.多版本.全球分布式.同步复制数据库.它是第一个 ...
- 进程——wait与waitpid、僵尸进程与孤儿进程
僵尸进程:子进程终止了,但是父进程没有回收子进程的资源PCB.使其成为僵尸进程 孤儿进程:父进程先与子进程结束了,使得子进程失去了父进程,这个时候子进程会被1号进程init进程领养,成为孤儿进程 为了 ...
- Javascript—①你好,世界!
新手Perfect教程之Javascript教程①-你好,世界! 前言:不知道Javascript是什么东东的自行度娘或google一下 Javascript在html<head>和< ...