博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跨域访问的方式
阅读量:6657 次
发布时间:2019-06-25

本文共 1071 字,大约阅读时间需要 3 分钟。

跨域问题的推荐文章:

http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html

现在分布式的项目都涉及到跨域这个问题:

什么是同源

同源,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可。相同的协议+域名+端口,我们可以确定是同源的。同源直接可以互相访问相互间的资源。

什么是跨域:

跨域,域名不同或者端口不同,协议不同,这些只要有一个不同就属于跨域。跨域不能随意访问不同域里面的资源的,比如分布式工程,a工程是不能访问b工程的资源的。

那么怎么解决这个问题呢?

跨域的解决方案?

两种:jsonp和httpclient

两种跨域的实现原理?

(1)jsonp的跨域原理:(通过js实现的跨域)

js是一种动态语言,不能单独使用,通常在页面与jsp一起使用,js的<script>标签的src是具有跨域功能的,通过这个src标签可以实现跨域问题。

原理是这样的:script标签的src通过跨域加载到资源之后,需要将资源解析成它自己所需要的js脚,只要这样才可以将数据返回。

所以我们必须将获取的资源转换成js脚本,才可以让src访问到资源后,将资源返回。

什么样子的算js脚本呢?

具有js标签的即我们可以当做js脚本,比如alert()方法,或者我们自己在<script>中定义的方法,都可以作为方法使用,从而让其作为js脚本返回。而通常我们定义的这个方法我们称之为回调函数,方法名是不固定的,可以是callback()也可以是其他的函数名fun()等等等等。

举个例子:

从上面可以看到,ab工程之间的访问就是采用jsonp的方式进行跨域访问的,即js可以访问js。但是返回的脚本必须是js脚本。

即在a工程中的<script>中定义一个函数,在b工程中使用这个函数。然后通过url访问b工程,这样自己js与js直接就可以互相通信了。

 所以总结如下:

 

(2)httpClient的方式实现跨域访问(通过java代码实现的跨域)

     HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

下载地址:

httpclient的原理就是http协议的原理,具体参阅HttpClient.API文档。

 

转载于:https://www.cnblogs.com/fengli9998/p/6731661.html

你可能感兴趣的文章
第十二章 Python网络编程
查看>>
Caffe错误汇总与解决办法
查看>>
1079. Total Sales of Supply Chain (25)
查看>>
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
查看>>
Oracle数据库中的左连接与右连接
查看>>
POJ-1742 Coins
查看>>
segmentController
查看>>
淘宝初始化代码 - 解决浏览器的兼容问题
查看>>
在win8 64位操作系统下Power Designer 16.5对MySQL5.6逆向工程的配置详解
查看>>
07.Javascript——入门高阶函数
查看>>
LeetCode – Refresh – Remove Duplicates from Sorted Array
查看>>
centos 7 中没有iptables 和service iptables save 指令使用失败问题解决方案
查看>>
R语言数据可视化1—ggplot2画柱状图
查看>>
Ubuntu安装微信开发者工具
查看>>
Windows 7 MVC2.0部署到IIS7【原创】
查看>>
C#属性和成员变量的区别?
查看>>
ps引发的血案
查看>>
HDU Problem 1312 Red and Black 【DFS】
查看>>
class.py
查看>>
关于DIPS的DLL注入(第22章)
查看>>