跨域问题的产生及解决方法

域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。 有一种简明的说法来解释广域跨域:跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。

解决方案:

1、js向服务器发送请求,然后让服务器去另一个域上获取数据后返回。(用于你无法控制另一个域) 比如php中利用cUrl。
2、放置跨域文件.
3、用JSONP。虽然不能跨域进行通信,但是可以引入跨域的js文件。
先定义一个函数

var returnData;
function getData(obj) {
   returnData = JSON.parse(obj);
}

当我们要向www.baidu.com/s.php请求数据的时候,我们可以引入某个包含返回信息的js文件。
比如: <script type="text/javascript" src="www.baidu.com/s.php?id=12321" /> 
js的内容是getData({json:‘格式‘});返回时输出 格式是 text/javascript (比如php用header(‘Content-type:text/javascript‘);来输出)
那么文件加载好后解析js时就会执行这个函数,返回得到的数据就被赋值给了returnData变量
以这样的方式插入到页面中:

var script = document.createElement(‘script‘);
script.src=‘www.baidu.com/s.php?id=12321‘;  //传入参数id=12321
body.appendChild(script);
时间: 2024-08-04 20:09:47

跨域问题的产生及解决方法的相关文章

ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法: 1.确定你的Silverlight项目及承载Silverlight的Web程序根目录下都包含2个跨域文件,分别是crossdomain.xml和clientaccesspolicy.xml: crossdomain.xml文件,如下: <?xml ve

跨域问题的九种解决方法

什么是跨域? 跨域是由于浏览器的同源策略造成的,是浏览器施加的安全限制. 什么是同源策略? 同源策略是一种约定,是浏览器最核心最基本的安全功能,缺少同源策略,浏览器容易收到XSS.CSRF等攻击. 同源策略是:拥有相同的协议.域名.端口号的网址间才可以相互访问资源. 一个域的页面去访问另一个域的资源就形成了跨域. 解决跨域的方法: 注意:1.如果是协议和端口造成的跨域问题,前端无法处理: 2.是否跨域,仅仅通过URL的首部来判断,不会通过域名对应的IP地址是否相同来判断: 3.跨域并不是请求发不

Ajax跨域问题的两种解决方法

浏览器不允许Ajax跨站请求,所以存在Ajax跨域问题,目前主要有两种办法解决. 1.在请求页面上使用Access-Control-Allow-Origin标头. 使用如下标头可以接受全部网站请求: header('Access-Control-Allow-Origin:*') 使用如下标头可以接受指定网站请求: header('Access-Control-Allow-Origin:http://www.abc.com') 所以,服务器写法: header('Access-Control-Al

jsonp 跨域Uncaught SyntaxError: Unexpected token :解决方法

[jQuery]Ajax实现跨域访问JSON Ajax跨域访问JSON 环境:.net4.0+jQuery+JSON.net 因为在跨域实现,所以这里新建网站,这个网站只需要Ashx文件 public void ProcessRequest(HttpContext context) { string strJson="[{"id":"100009","name":"mayixue","link":

2019-03-26 SpringBoot项目部署遇到跨域问题,记录一下解决历程

近期SpringBoot项目部署遇到跨域问题,记录一下解决历程. 要严格限制,允许哪些域名访问,在application.properties文件里添加配置,配置名可以自己起: cors.allowed.origin=http://10.xx.253.xx:8081,http://localhost:4200 做前后端分离的时候,这里允许的域名/IP一般都是前端项目所部署的机器. 添加一个配置类.@Configuration和@Bean注解一定要加上的.这样SpringBoot在启动的时候才会扫

nginx跨域了解与模拟与解决

模拟由于跨域访问导致的浏览器报错,在nginx代理服务器上设置相应参数解决 nginx 跨域一.同源策略何为同源:1.协议(http/https)相同2.域名(IP)相同3.端口相同 浏览器遵循同源策略的目的同源策略的目的是为了保证用户信息的安全,防止恶意的网站窃取数据.此策略可以防止一个页面的恶意脚本(JavaScript语言编写的程序)通过该页面的文档对象模型来访问另一网页上的敏感数据. 同源策略是必需的,否则cookie可以共享,互联网就毫无安全可言,同源策略仅适用于JavaScript脚

AJAX跨域请求json数据的实现方法

这篇文章介绍了AJAX跨域请求json数据的实现方法,有需要的朋友可以参考一下 我们都知道,AJAX的一大限制是不允许跨域请求. 不过通过使用JSONP来实现.JSONP是一种通过脚本标记注入的方式,它是可以引用跨域URL的js脚本,不过需要提供一个回调函数(必须在您自己的页面上),因此,你可以自己处理结果. 让我们看看JSONP的是怎么在jQuery,MooTools的,Dojo Toolkit中实现的. jQuery的JSONPjQuery.getJSON方法:Js代码 jQuery.get

关于跨域的处理的几种方法的整理

跨域是经常遇到的这里不再说跨域什么意思了,协议不同,端口不同,域名不同是为跨域: 解决方法: 1,后台设置代理,比如把上海有个服务器,我北京相用,可以北京后台代理, 2,前端采取jsop来获取数据 代码示例:此处后台是node.js简单实现,页面端口localhost:3020 前端:$(function(){ $("#btn").click(function(){ $.ajax({ method:"get", url:"http://127.0.0.1:

Ajax跨域问题的出现和解决

什么是跨域? 1).请求是执行过去了,但是响应的数据拿不到 2).浏览器有一个安全限制叫同源策略(针对ajax请求): 从http://localhost:80/member/apply.html页面发ajax发到http://localhost:8083/realauth/baseinfo这种就是跨域: 特点: 同源策略:协议名://主机号:端口号:必须一致: 任何一个不一致,ajax请求得到响应结果浏览器就不给你: 解决办法: 1).客户端jsonp的方式: 2).服务端允许跨域: 原理: