几种跨域请求详解(已采纳)

2、探索云计算的商业采纳与法律考量 本文探讨了云计算的商业采纳模式及其法律考量,详细介绍了公共云、私有云、混合云和社区云的特点与适用场景,并分析了企业在采用云计算过程中需关注的合同法、隐私保护、数据安全及知识产权等法律问题。此外,文章还讨论了如何制定云计算实施策略,通过云计算优化业务流程并推动商业模式创新,为企业提供实用的采纳指南和发展建议。 阅读详情

什么是跨域?

 协议 域名 端口号有一个不一样就是跨域

 

     跨域:跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的,XmlHttpRequest也不例外。

    如果两个页面拥有相同的协议(protocol),端口(如果指定),和主机,那么这两个页面就属于同一个源(origin), JavaScript  允许这种同源页面的数据互相通信。
 
端口 和 协议 ,一般生产项目中WEB页面是「看不见」端口号的,其实是缺省端口 80 ,目前网络劫持盛行,因此流行使用安全协议 HTTPS 来避免劫持
         
我们使用域名来指定一台主机,当然你也可以直接使用IP地址,重点在于不要以为 jandou.com 与 www.jandou.com 是同一域名,实际上 www.jandou.com 是一个二级域名,而 jandou.com 俗称为 裸域 ,
 
摘录另一篇文章《JavaScript跨域总结与解决办法》如下:URL说明是否允许通信
 
URL
说明
是否允许通信
同一域名下
允许
同一域名下不同文件夹
允许
同一域名,不同端口
看不见的端口号是缺省端口80, 
不允许
同一域名,不同协议
不允许
域名和域名对应ip
不允许
主域相同,子域不同
不允许
同一域名,不同二级域名(同上)
不允许(cookie这种情况下也不允许访问)
不同域名
不允许
 
特别注意两点:
  1. 如果是协议和端口造成的跨域问题“前台”是无能为力的,

  2. 在跨域问题上,域仅仅是通过“URL的首部”来识别    而不会去判断相同的ip地址对应着两个域或两个域是否在同一个ip上。“URL的首部”指window.location.protocol +window.location.host,也可以理解为“Domains, protocols and ports must match”。

 

怎么实现跨域请求?

通过Jsonp和服务器:

  • 为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了
 

1_1.通过 jsonp 原始方式跨域请求(方式一): (不会自动创建回调函数)

function getData() {
    //jsonp :通过创建动态script元素访问服务器,把回调函数名作为查询参数传递给服务器;
    //服务器请求到数据以后把数据放入到回调函数中返回
    var script = document.createElement('script') ;
    var wyUrl = 'http://c.m.163.com/nc/article/headline/T1348647853363/0-20.html';
    script.src ='http://localhost:9000?myUrl='+wyUrl+'&callback=callBackFun1';
    document.documentElement.appendChild(script);
}
function callBackFun1(data) {
    console.log(JSON.parse(data));
}

}

1_2.通过 jsonp原始方式跨域请求(方式二):

<script>
    var callBackFun2 = function(data) {   //必须写在下面src请求的前面
        console.log( JSON.parse(data));
    };
</script>
<script src="http://localhost:9000?myUrl=http://c.m.163.com/nc/article/headline/T1348647853363/0-10.html&callback=callBackFun2"></script>

 

 2_1.通过 jQuery的ajax中的 jsonp 方法 跨域请求:(get请求)(会自动创建回调函数)

function getData() {
   var wyUrl = 'http://c.m.163.com/nc/article/headline/T1348647853363/0-10.html';
   var url = 'http://localhost:9000?myUrl='+wyUrl;
   //ajax请求不用写回调函数,内部自动创建回调函数,名字随机,每次不一样
   $.ajax({
        url: url,
        type: 'get’,   //不写时,默认为get方法
        dataType: 'jsonp',
       success: function (data) {
            console.log(JSON.parse(data));
        },
       error: function (e) {
            console.log(e);
        }
    })
}
 

 2_2.通过 jQuery的ajax中的 jsonp 方法 跨域请求:(post请求)(会自动创建回调函数)

           注意:ajax的post方法不会自动将传输的数据转化为JSON.stringfy格式:所以如果需要,得自己转换一下再传输
                JSON.stringify(  {wyUrl: 'http://c.m.163.com/nc/article/headline/T1348647853363/0-10.html'}     ),
//ajax请求不用写回调函数,内部自动创建回调函数,名字随机,每次不一样   
$.ajax({
    url: 'http://localhost:9999',
    method: 'post',
    dataType: 'jsonp',
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    data: {myUrl: 'http://c.m.163.com/nc/article/headline/T1348647853363/0-10.html',randomNum:55},
    success: function (data) {
        console.log(JSON.parse(data));
    },
})

拓展:

 3_1.通过 angular 的 $http() 中 jsonp 方法 跨域请求: (回调函数是固定写法)

          注意:angular里面的callback 必须为:JSON_CALLBACK
          原理:  jsonp利用的是script可以访问外部信息的原理发送请求并且利用jsonp协议进行数据交互 
.controller('myController', ['$scope', '$http',function ($scope,$http) {
    var wyUrl= 'http://c.m.163.com/nc/article/headline/T1348647853363/0-10.html';
    $scope.mine = {
        getData: function () {
            $http({
                method: 'jsonp',
                url: 'http://localhost:9000?myUrl='+ wyUrl +'&callback=JSON_CALLBACK'
            }).then(function  success(result) {
                        console.log(result);
                    },
                    function error(e) {
                        console.log(e);
                    });
        }
    };
}])

 

 3_2.通过 angular 的 $http() 中 post 方法 跨域请求:

         注意:angular的post方法会自动将传输的数据转化为JSON.stringfy格式:
         原理:post设置请求头跳过预请求来实现跨域
.controller('myController', function ($scope,$http) {
    $scope.mine = {
        getData: function () {
            $http({
                method: 'post',
                url: 'http://localhost:8888',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                data: {
                    wyUrl: 'http://c.m.163.com/nc/article/headline/T1348647853363/0-10.html'
                }
            }).then(function success(e) {
                        console.log(e);
                    },function error(e) {
                        console.log(e);
                    });
        }
    }

})

 

总结:

  • 代理实现最麻烦,但使用最广泛,任何支持AJAX的浏览器都可以使用这种方式。
  • JSONP相对简单,但只支持GET方式调用。
 
 
 
【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二 阅读详情

相关推荐

张量/数组存储方式与向量化展开/展平、view、reshape、permute对比

对于一个Tensor来说,我们可以认为它有两种存储方式。

欢迎关注,共同进步! 3434

跨域请求解决方案及详解

1. 什么是跨域        跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。        同源策略限制了一下行为: Cookie、LocalStorage 和 IndexDB 无法读取 DOM 和 JS 对象无法获取 Ajax请求发送不出去 (因为浏览器的同源策略导致了跨域,就是浏览器在搞事情

weixin_46178852的博客 6580

Frida实战:高效dump Android内存中的so文件与修复技巧

本文详细介绍了使用Frida工具dump Android内存中已解密so文件的实战技巧。针对加固应用静态分析失效的痛点,文章提供了从环境搭建、使用frida_dump脚本自动化抓取内存数据,到利用SoFixer工具修复ELF文件结构的完整流程,帮助逆向分析人员高效获取可分析的so文件。

tt34567的博客 527

跨域请求及其解决方案

目录 一、理论概述 1. 什么是跨域请求(Cross-domain Request) 2. 浏览器的同源策略(Same-origin Policy) 3. 存在的安全风险 4. CSRF攻击简介 二、跨域方案 1.跨域资源共享(CORS) (1)CORS简单请求 (2)CORS非简单请求(也称预检请求) HTTP 响应首部字段 Access-Control-Allow-Origin Access-Control-Expose-Headers Access-Control-M...

Jason Z的博客 2543

【STM32】BLDC驱动&控制开发笔记 | 07_SPI通信测试 - STM32F407用SPI配置DRV8323驱动芯片

使用STM32F407的SPI通信功能配置DRV8323S驱动芯片的详细过程说明。

这里是 F菌的进阶之路。 6289

嵌入式学习(29)-ASM330LHH驱动程序

ASM330LHH是一种系统级封装器件,具有3D数字加速度计和3D数字陀螺仪,扩展温度范围上限为+105 °C,适用于汽车非安全领域的应用。ASM330LHH 的满量程加速范围为±2 g、±4 g、±8 g 和 ±16 g,角速度范围扩展至 ±125 dps、±250 dps、±500 dps、±1000 dps、± 2000 dps 和 ±4000 dps,适合各种汽车应用。

剑藏锋的博客 1175

什么是跨域请求?

跨域请求(Cross-Origin Request)是指浏览器在一个域(比如)下发起的请求,目标资源位于另一个域(比如)的情况。由于浏览器的,它会限制网页只能访问与当前页面同一源(域、协议和端口)的资源。

weixin_57722696的博客 1778

ArcGIS属性表汉字转拼音

接着我安装了一个编辑器“PyCharm Community Edition 2019.3.3\bin\pycharm64.exe”,在里面添加“pypinyin”包,然后将其设置为arcgis的编辑器和调试程序,还是失败;我在10.6的机器上折腾了上面几步,直到两周后脚本突然运行成功,我也不确定是哪一步导致pypinyin包配置成功,因此将心得体会写出来,如果过一段时间,打开10.2的机器运行脚本成功了,再写后续.......,按照“配置方法1:”进行尝试,显示配置失败。

2301_77413856的博客 1295

什么是跨域(Cross-Origin)请求,如何解决跨域问题?

引言跨域请求基本概念同源策略概述跨域请求的作用解决跨域问题的方法示例一:使用JSONP发起跨域请求示例二:设置CORS响应头示例三:使用Fetch API发起带有CORS的请求设置CORS预检请求示例四:CORS预检请求使用代理服务器示例五:配置Webpack Dev Server代理实际工作中的使用技巧技巧一:正确设置Access-Control-Allow-Origin技巧二:处理预检请求技巧三:使用代理服务器技巧四:避免使用Credentials技巧五:利用第三方库拓展内容结语。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1493

【基金量化研究系列】基金绩效归因模型——Brinson多期归因模型之python实现

文章目录1. 引言2. Brinson多期归因模型的Python实现2.1 基准数据读取模块2.2 持仓数据读取模块2.3 持仓收益与基准计算模块2.4 Brinson多期归因模型核心算法Brinson_Multiple2.5 主函数模块3. 归因结果写在最后 1. 引言 在上文中,我们已经介绍了Brinson归因模型的基本思想。那么,就让我们动起手来,实现这一方法吧! 在Brinson多期归因模型实现的过程中,本文使用模块化方法,将整个实现过程划分为如下五个功能板块: Module 1: 基准数据读取模

Mikey_Sun的博客 2万+

主成分分析(Principal Component Analysis,PCA)

主成分分析1.主成分分析1.1 降维(Dimensionality Reduction)1.2 均值(Mean)1.3 方差(Variance)1.4 协方差(Covariance)1.5 协方差矩阵(Covariance Matrix)1.6 线性变换(Linear Transformation)1.7 主成分分析(PCA)1.8 PCA和SVD的关系 1.主成分分析 关于PCA的介绍:用最直观的方式告诉你:什么是主成分分析PCA 笔记来源:Principal Component Analysis (PC

一个搬运知识的笨小孩 3227

跨域与同源策略

域名由英文字母、数字、英文点、英文横杠组成,不区分大小写。每一个点分隔开的部分称为一个标号,每一个标号都不能超过 63 个字符。标号的级别从左到右由低到高,因此最右边的标号称之为顶级域名,次右边的域名称之为二级域名,再左边的域名称之为三级域名。其实域名的完整写法应该是顶级域名后面再加一个点,这个点就是根。

花铛 900

第六部分:VTK进阶(第182章 体素化与隐式建模)

本文系统介绍了基于点云构建有符号距离场(SDF)的核心原理与VTK实现方法。主要内容包括:1)SDF的基本概念与算法原理,通过体素网格隐式表达几何表面;2)关键参数配置指南,如体素分辨率、边界范围和影响半径的选择;3)点云法向估计、SDF计算与等值面提取的完整工作流程;4)常见问题解决方案与性能优化建议。文中提供了详细的C++代码示例,展示从随机点云生成SDF并重建曲面的完整过程,特别强调了法向估计、参数调优和后处理等关键环节。该方法适用于点云表面重建、几何处理等应用场景。

仰望星空的博客 528

猿创征文 | 解决跨域问题

跨域在如今前后端分离的情况下经常会出现的问题,本文将详细讲解解决跨域问题的方案。

分享学习编程中的遇到的问题,总结平时的笔记 1621

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

解决跨域问题

一、 现象 二、 跨域分析 1.什么是跨域(域名) url:统一资源定位符 用来定位网络上具体的资源位置的 uri:统一资源标志符 用来区分网络上不同的资源的 跨域是指跨域名的访问,以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 www.jd.com:8080 与...

Yuncoco的博客 1122

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

axios中的baseURL与跨域问题

然而,有时候可能会出现需要在生产环境下使用代理的情况,例如在将前端和后端部署在不同的服务器上,但需要通过同一个域名访问前端和后端资源时。**Proxy 代理:**在开发环境中,可以配置 Vue 项目的开发服务器来充当代理,将 API 请求转发到后端服务,从而绕过浏览器的跨域限制。在生产环境中,通常前端和后端会分别运行在不同的端口上,例如前端在 http://localhost:8080,后端在 http://localhost:3000,此时需要配置生产环境的代理来解决跨域问题。

冷脸萌萌的技术实践 2550

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

前后端分离跨域问题解决

1.什么是跨域 域名:记忆网络电脑ip很难记,就给它取了一个名字来记忆,这个名字就要域名,域名最终要被转换为ip. 比如: www.baidu.com www.jd.com 1. 跨域情况 一个系统访问另一个系统才会存在跨域,同系统访问不存在跨. 跨域是指跨域名的访问,以下情况都属于跨域: 1.域名不同: www.jd.com 与 www.taobao.com 2.域名相同,端口不同: www...

baidu_39120378的博客 1012

几分钟让你解决【跨域问题】

跨域 定义 跨域是指跨域名的访问,当一个系统访问另一个系统就有可能会出现跨域问题。 出现原因 是浏览器对于ajax请求的一种安全限制 域名不同,端口不同,二级域名不同。这三种满足任意一种都会出现跨域问题 解决方式 Jsonp-- json变种 nginx反向代理(部署) CORS(都可以使用-采纳) Jsonp-- json 将请求填充再标签(src或img)中 <sccipt src=...

ChengHuanHuaning的博客 442

ajax跨域问题解决方案

今天来记录一下关于ajax跨域的一些问题。以备不时之需。跨域同源策略限制同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。解决方式通常来说,比较通用的有如下两种方式,一种是从服务器端下手,另一种则是从客户端的角度出发。二者各有利弊,具体要使用哪种方式还需要具体的

更上一层楼! 8852

同源策略和跨域

在前端开发的过程中,我们经常遇到"跨域"的问题,以下的文章将列举一下我在工作中碰到的跨域问题。以及稍稍的探讨一下为什么会有"跨域"问题的出现,和所谓的"同源策略" 同源策略 1. 历史 1995 年由 Netscape 公司提出,之后被其他浏览器厂商采纳。 同源策略只是一个规范,并没有指定其具体的使用范围和实现方式,各个浏览器厂商都针对同...

weixin_34211761的博客 203

今天来记录一下关于ajax跨域的一些问题。以备不时之需。

  今天来记录一下关于ajax跨域的一些问题。以备不时之需。    跨域    同源策略限制    同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。    解决方式    通常来说,比较通用的有如下两种方式,一种是从服务器端下手,另一种则是从客户端的角度出发...

weixin_30846599的博客 108

mui初级入门教程(三)— html5+ XMLHttpRequest 与mui ajax用法详解

文章来源:小青年原创发布时间:2016-05-29关键词:mui,html5+,XMLHttpRequest,ajax,懒加载转载需标注本文原始地址: http://zhaomenghuan.github.io... 写在前面 这是这个系列的的第三篇文章,前面的文章在多个地方(本人github博客、dcloud ask社区、segmentfault)发出来了,很多朋友...

374

vue2.0,jsonp的一个小案例 请求百度搜索的接口

vue2.0,jsonp的一个小案例 请求百度搜索的接口 首先解释一下jsonp: 前言: 由于Sencha Touch 2 这种开发模式的特性, 基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。 什么是Sencha Touch? Sencha框架是第一个基于HTML5的移动也能给予框架,可以让Web应用看起来像网络应用。美丽的用户界面组件和丰富的数据管理,全部基于最新的HTML 5和C

JackDan9 3247

用户采纳AI建议的研究#CHI2025有哪些知识?

研究找了400人,让他们做两种任务:一种是逻辑推理题(像考试选择题),另一种是看图估算数量(像猜罐子里有多少豆子)。在逻辑推理题中,它还帮助人们更好地调整信心,这些建议,也就是在AI建议是对的时候听从,在AI建议是错的时候不听,避免犯错或错过好的建议。参与者先自己答题,然后看AI给的建议(AI建议有时是对的,有时是错的),最后再给出最终答案。是不是经常能看到 LLM 类的产品,会备注内容是AI生成的,请仔细检查。(即使建议是错的,信心也可能增加)。这是最普通的方式,就像你平时直接问AI问题,它会给出一个。

shadowcz007的博客 667
上一篇: 解决GitHub中灰色文件夹问题
下一篇: tween.js详解
大叔0o0
博客等级 码龄10年 31粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值