跨域

一个域名地址的组成

http:// www abc.com : 8080 / scripts/jquery.js

协议 子域名 主域名 端口号 请求资源地址

端口号:一般来说域名端口号是80,如果端口号是80,可以省略

什么是跨域

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页面中:

  1. <script>
  2. function jsonp(json){
  3. alert(json["name"]);
  4. }
  5. </script>
  6. //script标签可以向不同的域名提交HTTP请求
  7. //载入另一个域名的jsonp.js
  8. <script src= "http://www.bbb.com/jsonp.js"> </script>

在www.bbb.com页面中:

  1. jsonp({' name':'洪七','age':24));

这种方法是借助script标签节点可以跨域访问的特性

处理跨域方法三 ——XHR2

HTML5提供的XMLHttpRequest Level2已经实现了跨域访问以及其他的一些新功能

IE10以下的版本都不支持

在服务器端做一些小小的改造即可:

  1. //*表示所有域都可以访问,也可以设置特定域名
  2. header('Access-Control-Allow-Origin:*');
  3. header('Access-Control-Allow- Methods:POST,GET');

AJAX学习笔记——跨域的更多相关文章

  1. jw player学习笔记----跨域请求

    需求来源:播放器皮肤文件请求不到,被限制了. 参考官网解决方案: http://www.longtailvideo.com/support/jw-player/28844/crossdomain-fi ...

  2. 【Java Web开发学习】跨域请求

    [Java Web开发学习]跨域请求 ================================================= 1.使用jsonp ===================== ...

  3. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  4. js中ajax如何解决跨域请求

    js中ajax如何解决跨域请求,在讲这个问题之前先解释几个名词 1.跨域请求 所有的浏览器都是同源策略,这个策略能保证页面脚本资源和cookie安全 ,浏览器隔离了来自不同源的请求,防上跨域不安全的操 ...

  5. 06: AJAX全套 & jsonp跨域AJAX

    目录: 1.1 AJAX介绍 1.2 jQuery AJAX(第一种) 1.3 原生ajax(第二种) 1.4 iframe“伪”AJAX(第三种) 1.5 jsonp跨域请求 1.6 在tornad ...

  6. vue.js学习之 跨域请求代理与axios传参

    vue.js学习之 跨域请求代理与axios传参 一:跨域请求代理 1:打开config/index.js module.exports{ dev: { } } 在这里面找到proxyTable{}, ...

  7. ajax请求ashx跨域问题解决办法

    ajax请求ashx跨域问题解决办法 https://blog.csdn.net/windowsliusheng/article/details/51583566 翻译windowsliusheng  ...

  8. AJAX学习笔记2:XHR实现跨域资源共享(CORS)以及和JSONP的对比----转载

    1 前言: 首先对参考文章作者表示感谢,你们的经验总结给我们这些新手提供了太多资源.本文致力于解决AJAX的CORS问题,我在逻辑上进行了梳理:首先,系统的总结了CORS问题的起源-同源策略:其次,介 ...

  9. 跨域学习笔记1--跨域调用webapi

    在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案. 通过自己的研究以及在网上看了一些大神的博客,写了一个Demo 首先新建一个webapi的程序,如下图所示: 由于微软已 ...

随机推荐

  1. CSS 常用效果--持续更新

    单行超出省略: white-space: nowrap; text-overflow:ellipsis; overflow:hidden; 多行超出省略: text-overflow: -o-elli ...

  2. Python 访问一个网址之后输入信息进行检索

    window Python 3 Pycharm软件 from selenium import webdriver #导入Selenium的webdriver from selenium.webdriv ...

  3. jira常用配置

    1.关闭注册入口 系统->一般配置->运行模式:私有 2.分享给用户组是,看不到部分用户组的时候,只需要把你的账号添加该分组即可. 3.为项目分配权限,问题-->问题属性——> ...

  4. C++_没有STL不能解决的问题之——<algorithm>

    这个坑好大,慢慢写 一.非修改式序列操作 1.find() 在区间中查找出某元素第一次出现的位置(注意!!是返回地址值) int main(){ ]={,,,,,}; int *b; b=find(a ...

  5. 在 VMware 中安装 MacOS 全记录

    在 VMware 15 中安装 MacOS Mojave 安装文件 下载:Unlocker v3.0 for VMware 15地址:https://github.com/DrDonk/unlocke ...

  6. Jenkins+maven+gitlab自动化部署之Jenkins系统管理配置(四)

    一.Jenkins全局工具配置 在jenkins首页依次进入系统管理>>全局工具配置: 1) jdk.git.maven配置 指定其在服务器中的目录位置 二.插件管理 1)依次点开系统管理 ...

  7. (二)spring Security 自定义登录页面与校验用户

    文章目录 配置 security 配置下 MVC 自定义登录页面 自定义一个登陆成功欢迎页面 效果图 小结: 使用 Spring Boot 的快速创建项目功能,勾选上本篇博客需要的功能:web,sec ...

  8. UVALive-8201-BBP Formula

    8201-BBP Formula Time limit: 3.000 seconds In 1995, Simon Plouffe discovered a special summation sty ...

  9. WUSTOJ 1349: TLE(Java)算法优化

    题目链接:1349: TLE Description WH在刷题时,设计出了如下代码: #include<stdio.h> int main() { int i, j, cnt, k, N ...

  10. jdk 8 特性

    date相关: 1.在jdk 8之前,由于Date,Calendar的烂设计(烂的原因:日期计算复杂,Date没有时区),催生了一个优秀的第三方时间框架:Joda-Time(解决了:日期的计算,时区) ...