AJAX学习笔记——跨域
跨域
一个域名地址的组成
http:// www abc.com : 8080 / scripts/jquery.js
协议 子域名 主域名 端口号 请求资源地址
端口号:一般来说域名端口号是80,如果端口号是80,可以省略
- 当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。
- 不同域之间相互请求资源,就算作“跨域”
- 比如: http://www.abc.com/index.html请求http://www.efg.com/service.php
什么是跨域
JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制, a.com域名下的js无法操作b.com或是c.a.com域名下的对象。
JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。
www.abc.com/index.html调用www.abc.com/service.php (非跨域)
www.abc.com/index.html调用www.efg.com/service.php (跨域)
www.abc.com/index.html调用bbs.abc.com/service.php (跨域)
www.abc.com/index.html调用www.abc.com:81/service.php (跨域)
www.abc.com/index.html调用https://www.abc.com/service.php(跨域) 没有写协议,默认是http协议
主域名与子域名
主域名
abc.com
子域名
www.a bc.com
bbs.abc.com
beijing.bbs.abc.com
haidian.beijing.bbs.abc.com
处理跨域方法一 ——代理
通过在同域名的web服务器端创建一个代理:
北京服务器(域名: www.beijjing.com )
上海服务器(域名: www.shanghai.com )
比如在北京的web服务器的后台
( www.beijing.com/proxy-shanghaiservice.php )来调用上海服务器
( www.shanghai.com/service.php )的服务,然后再把响应结果返回给前端,这样前端调用北京同域名的服务就和调用上海的服务效果相同了。
处理跨域方法二 ——JSONP
jQuery的AJAX方法本身就支持JSONP的处理方式
只能对GET请求起到效果,不能改造POST请求。
注意:JSONP的方式是不支持POST请求的
JSONP可用于解决主流浏览器(GET请求)的跨域数据访问的问题。
在www.aaa.com页面中:
<script>
function jsonp(json){
alert(json["name"]);
}
</script>
//script标签可以向不同的域名提交HTTP请求
//载入另一个域名的jsonp.js
<script src= "http://www.bbb.com/jsonp.js"> </script>
在www.bbb.com页面中:
jsonp({' name':'洪七','age':24));
这种方法是借助script标签节点可以跨域访问的特性
处理跨域方法三 ——XHR2
HTML5提供的XMLHttpRequest Level2已经实现了跨域访问以及其他的一些新功能
IE10以下的版本都不支持
在服务器端做一些小小的改造即可:
//*表示所有域都可以访问,也可以设置特定域名
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow- Methods:POST,GET');
AJAX学习笔记——跨域的更多相关文章
- jw player学习笔记----跨域请求
需求来源:播放器皮肤文件请求不到,被限制了. 参考官网解决方案: http://www.longtailvideo.com/support/jw-player/28844/crossdomain-fi ...
- 【Java Web开发学习】跨域请求
[Java Web开发学习]跨域请求 ================================================= 1.使用jsonp ===================== ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- js中ajax如何解决跨域请求
js中ajax如何解决跨域请求,在讲这个问题之前先解释几个名词 1.跨域请求 所有的浏览器都是同源策略,这个策略能保证页面脚本资源和cookie安全 ,浏览器隔离了来自不同源的请求,防上跨域不安全的操 ...
- 06: AJAX全套 & jsonp跨域AJAX
目录: 1.1 AJAX介绍 1.2 jQuery AJAX(第一种) 1.3 原生ajax(第二种) 1.4 iframe“伪”AJAX(第三种) 1.5 jsonp跨域请求 1.6 在tornad ...
- vue.js学习之 跨域请求代理与axios传参
vue.js学习之 跨域请求代理与axios传参 一:跨域请求代理 1:打开config/index.js module.exports{ dev: { } } 在这里面找到proxyTable{}, ...
- ajax请求ashx跨域问题解决办法
ajax请求ashx跨域问题解决办法 https://blog.csdn.net/windowsliusheng/article/details/51583566 翻译windowsliusheng ...
- AJAX学习笔记2:XHR实现跨域资源共享(CORS)以及和JSONP的对比----转载
1 前言: 首先对参考文章作者表示感谢,你们的经验总结给我们这些新手提供了太多资源.本文致力于解决AJAX的CORS问题,我在逻辑上进行了梳理:首先,系统的总结了CORS问题的起源-同源策略:其次,介 ...
- 跨域学习笔记1--跨域调用webapi
在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案. 通过自己的研究以及在网上看了一些大神的博客,写了一个Demo 首先新建一个webapi的程序,如下图所示: 由于微软已 ...
随机推荐
- python防止sql注入的方法
python防止sql注入的方法: 1. 使用cursor.execute(sql, args)的参数位: sql_str = "select * from py_msgcontrol.py ...
- Copy-On-Write技术
通俗的解释,假定多方需要使用同一个资源时,没有必要为每一方都创建该资源的一个完整的副本,反而令多方共享这个资源,当某方需要修改资源的某处时,利用引用计数,把该处复制一个副本,再把跟新的内容写入该副本中 ...
- LeetCode 643. 子数组最大平均数 I(Maximum Average Subarray I)
643. 子数组最大平均数 I 643. Maximum Average Subarray I 题目描述 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. LeetCo ...
- Java program to find the largest element in array
Java program to find the largest element in array Given an array of numbers, write a java program to ...
- CentOS 7命令行安装GNOME桌面
1.切换至root用户,检查一下已经安装的软件以及可以安装的软件 [root@localhost ~]# yum grouplistLoaded plugins: fastestmirrorThere ...
- 关于 Visual Studio 的代码度量值
查看方式:Visual Studio -> Analyze -> Calculate code metrics feature 代码度量(Code Metrics)是用来测量专业标准的软件 ...
- [SourceTree] - 使用内置 Git 克隆项目出现 templates not found 问题之解决
背景 使用 SourceTree 克隆 Asp.Net Core 项目失败. 错误 warning: templates not found C:\Program Files\Git\share\gi ...
- todo---java中的json探讨
1.json的命名格式 2.json赋值原则 3.json常用的工具 4.json的处理的第三方软件比较 5.json的起源 6.关于json串的对于null ,"" 的不同的第三 ...
- 第五章 模块之random 、hashlib、time /datetime
5.2 random 返回随机生成的一个实数 random.randint() 返回随机生成的一个实数 import random #调用模块def get_random_code(length=6 ...
- go语言的安装及环境配置
Go语言开发环境搭建(ubuntu) 1.清理.卸载之前的 go 语言环境: 删除go目录:sudo rm -rf /usr/local/go 删除软链接(如果建立了软链接):sudo rm -rf ...