Ajax跨域问题研究笔记

告别卡顿!手把手教你用北鲲云超算平台图形化提交COMSOL仿真任务(附RDP连接技巧) 本文详细介绍了如何利用北鲲云超算平台图形化提交COMSOL仿真任务,解决本地计算资源不足导致的卡顿问题。通过云端高性能计算,用户可轻松配置多核CPU和大内存资源,实现高效仿真计算,并附有RDP连接优化技巧,提升远程操作体验。 阅读详情



作者:fbysss
msn:jameslastchina@hotmail.com  
blog:blog.youkuaiyun.com/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:Ajax跨域

一.试验准备

  •     修改c:/windows/system32/drivers/etc/hosts文件,加入127.0.0.1 www.a.com www.b.com
  •     Tomcat/webapps下建立crossdomain目录,建立一个空的WEB-INF目录,创建page_on_site_b.jsp和index_on_site_a.jsp。

page_on_site_b.jsp内容如下:

[javascript]  view plain copy
  1. var varonb='this is a var on site b.';  
  2. alert('welcome to site b.');  

ajax_on_site_a.jsp内容如下:

 

[javascript]  view plain copy
  1.  <mce:script type="text/javascript"><!--  
  2. var xmlHttp;  
  3. if(window.ActiveXObject){     
  4.     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");     
  5. }     
  6. else if(window.XMLHttpRequest){     
  7.     xmlHttp = new XMLHttpRequest();     
  8. }   
  9. xmlHttp.onreadystatechange=callbackFunc;  
  10. xmlHttp.open("post","http://www.b.com:8888/crossdomain/page_on_site_b.jsp",true);    
  11. xmlHttp.send(null);   
  12.   
  13. function callbackFunc(){  
  14.   if(xmlHttp.readystate==4 && xmlHttp.status==200){  
  15.     alert("可以访问");    
  16.   }  
  17. }  
  18. // --></mce:script>      

 

    

 

二、ajax是不允许跨域访问的。

不同的浏览器在不同情况下表现不一样:

  • IE中,如果是本地html文件调用远端资源,不会提示任何信息,可以通过。
  • 如果把文件放到网站中,输入http://localhost:8888/crossdomain/ajax_on_site_a.jsp会弹出对话框提示“该页正在访问其控制范围之外的信息。这可能导致安全风险。是否继续?”,点击“是”之后可以正确执行。
  • 如果输入http://www.a.com:8888/crossdomain/ajax_on_site_a.jsp,IE会提示错误“没有权限”
  • 在Firefox浏览器中,根本无法正常执行,会报异常:uncaught exception: Access to restricted URI denied(NS_ERROR_DOM_BAD_URI)

我们不能期待用户能为我们改变什么,只能在程序上面做文章。
三、script标签是可以跨域的。

编写script_on_site_a.jsp:

[javascript]  view plain copy
  1. <mce:script src="http://www.b.com:8888/crossdomain/page_on_site_b.jsp" mce_src="http://www.b.com:8888/crossdomain/page_on_site_b.jsp"></mce:script> //用于引入其他站点资源。至于是js还是jsp无所谓。  
  2. <mce:script type="text/javascript"><!--  
  3.     alert(varonb);//用于检验远端资源是否正确载入  
  4. // --></mce:script>  

浏览器中输入

http://www.a.com:8888/crossdomain/script_on_site_a.jsp
一切正常。

四、其他

1.在实际应用中,如果url带参数,可以采用动态创建script元素,动态指定src来解决。

2.还有一种方法,就是在www.a.com站点中增加一个servlet,通过servlet调用urlConnection来获取任意站点的资

源,再把结果传回,站点a中的页面只需要调用本地的servlet,避免了跨域。但这样的方式,会带来本地服务器的

额外开销。
可参看:http://deepin.javaeye.com/blog/512028
3.ajax框架提供的jsonp,可以在一定程度上解决跨域问题。这一定程度,就是说得服务器支持你。
jsonp(JSON WITH PADDING)
利用script标签,通过特定的src地址的调用,来执行一个客户端的js函数,在服务器端生成相对的数据(json格

式)并以参数的形式传递给这个客户端的js函数并执行这个函数,前提是需要服务器端的数据输出格式必须是JSON

。
可参看文章http://hpyer.cn/visit-remote-data-with-jsonp-in-javascript.html

4.iframe可以跨域,但存在一些问题。

解决办法可参看http://liuhaixiao.javaeye.com/blog/81959(未测试)

5.如果所有资源都可以自己控制,可以考虑使用document.domain来解决。

6.最新进展:W3C 跨域请求标准已经出台,详见《AJAX(XMLHttpRequest)进行跨域请求方法详解》http://www.chinaz.com/Program/XML/01111035112010.html

7.有专门解决ajax跨域问题的js库:

http://www.ajax-cross-domain.com/

五、思考:
1.为什么不允许跨域?
    整半天这么费劲,干嘛不允许跨域呢?这是出于安全考虑。至于跨域请求到底有哪些风险呢?我能想到的,因为ajax可以不刷新页面进行一系列操作,一旦网站被恶意注入,用户不知不觉就受害了

。不过,script标签同样可以做到这一点,为啥不被禁止呢?呵呵,这个问题有待考证。
2.为什么一定要动态创建script呢?直接写<script src="xxx"></script>不行吗?
不是不行,而是说到ajax,往往是在页面加载完之后,用户进行了某种行为,比如点击一个按钮之后,才出发ajax请求,而script标签是页面加载完毕马上要执行的。如果要实现类似Ajax的效果,就要

在点击按钮的时候,动态创建script标签,获取远端资源。但有局限性:不是真正的ajax,只能使用get方式,返回的结果,必须输出script才有意义。
还可以参考:http://hi.baidu.com/reydingruhui/blog/item/05f0b3e9e0b95236b90e2dc7.html

3.参考文章
http://www.chinaunix.net/jh/80/988681.html
看完这篇文章,应该知道,后台输出的东西,必须是javascript语句。一般使用json数据给变量赋值比如var person={id:'1',name:'sss'};这样,在下面的js中,才能得到变量值,这和jsonp的原理应该差不多。
http://www.jz123.cn/text/284020.html

注:不管怎么搞,如果你要访问的跨域资源是未知的(不知道返回什么结果),跨域往往是不能成功的。因为返回的东西只有是合法的纯javascript,才能被读取。



生成模型实战 | 基于Transformer生成音乐 本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。 阅读详情

相关推荐

AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流

视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿

weixin_27210125的博客 1065

去掉IE自动弹出“该页正在访问其控制范围之外的信息,这有些危险,是否继续?”对话框...

IE->工具->安全->“Internet”和“本地Intranet”中的都包含一个“跨域访问数据源”选项,将该项值修改为“启用”确定之后重新登录,此时对话框就不会弹出来了! 转载于:https://www.cnblogs.com/leon_2007/archive/2010/03/12/1684281.html...

weixin_34302798的博客 586

瑞芯微RK3506开发板Ethercat主站性能优化实战:从内核配置到微秒级延迟控制

本文详细介绍了在瑞芯微RK3506开发板上实现EtherCAT主站微秒级延迟控制的实战优化方案。核心在于部署Preempt-RT实时内核,并进行深度系统调优,包括CPU隔离、中断亲和性设置、内存锁定及电源管理调整。通过绕过Linux网络栈的专用驱动加载与配置,最终实现了稳定的高性能实时控制,满足工业自动化需求。

tcp8optimizer的博客 317

解决该页正在访问其控制范围之外的数据。这有些危险。是否继续?

                     最近做了个用户控件,调用的时候IE老是跳出提示框“该页正在访问其控制范围之外的信息,这有些危险,是否继续?”,不堪其扰。 通过网络,找到以下解决办法。 工具—〉internet选项—〉安全—〉自定义级别—〉其他 栏里面 —〉通过域访问数据资源 有“提示”改选为“启用”

luzhuxi的专栏 1万+

5G核心网Framed Routing功能解析:基于PFCP的帧路由机制与多终端互联实践

5G核心网Framed Routing功能解析:基于PFCP的帧路由机制与多终端互联实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1468

基于PTB-XL数据集的深度学习心电信号分类

心电信号的分析与处理是心血管疾病诊断的重要手段。该领域的主要工作领域是分类,它越来越多地得到基于机器学习的算法的支持。在这项工作中,开发了一个深度神经网络来自动分类初级心电信号。这项研究是在PTB-XL数据库中包含的数据上进行的。提出了三种神经网络架构:第一种基于卷积网络,第二种基于SincNet,第三种基于卷积网络,

weixin_55121617的博客 7008

Ajax跨域问题

ajax 是不能跨域。那么怎么解决前端发送请求的跨域问题呢。超详细,1、设置响应头、2、通过jsonp 3、通过调用jQuery封装的jsonp 4、httpclient 5、nginx

helpluozhao123的博客 4152

使用 Python 实现基于 AGA8 GERG - 2008 方程计算掺氢天然气压缩因子的示例代码

AGA8 GERG - 2008 方程是用于计算天然气混合物热力学性质的一种方法,下面是一个使用 Python 实现基于 AGA8 GERG - 2008 方程计算掺氢天然气压缩因子的示例代码。需要注意的是,AGA8 GERG - 2008 方程非常复杂,完整实现需要大量的系数和详细的计算步骤。这里我们简化了部分过程,使用CoolProp库来完成计算,因为CoolProp已经实现了 GERG - 2008 方程。

AI的内部世界的博客 887

ajax跨域问题

跨域问题简单的说就是前台请求一个后台链接,发送请求的前台与后台的地址不在同一个域下,就会产生跨域问题。这里所指的域包括协议、IP地址、端口等。 1.跨域访问安全问题 后端代码: package cn.qs.controller; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.collections.MapUtils; import org.springframework.web.bi

山海也有意难平 5190

2023年GESP12月认证C++五级真题解析

例如,如果a=4,那么4是最⼩的幸运数,而1不是,但我们可以连续对1做3次+1操作,使其变为4,所以我们可以说,1幸运化后的结果是 4。【题目大意】给一个完全平方数的标准,推导出哪些是超级幸运数,然后判断N个数字中,哪些是超级幸运数,是的输出“lucky”,不是的输出离该数字最近的比它大的数字。前一个数字,下标是j的数字是偶数,后面的数字下标是j+1的是奇数,按照要求,偶数在奇数的后面,要交换。A函数时间复杂度是O(n/2),B函数算法是O(sqrt(n)),大部分情况后者是优的,值更小。

lan_in的博客 1008

YOLOv8改进,YOLOv8添加DCNv4可变性卷积(windows系统成功编译),全网最详细教程

DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以最小化冗余操作,从而加速计算。这些改进使得DCNv4相比DCNv3显著加快了收敛速度,并且处理速度大幅提升,前向传播速度超过三倍。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6474

AJAX请求及解决跨域问题

AJAX请求理解和代码演示 跨域问题解决 案例呈现

xiaowuwjw的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AJAX之跨域问题

跨域简单的说,就是从一个域名的网页去访问另一个域名网页的资源。通过超链接或者form表单提交或者window.location.href的方式进行跨域是不存在问题的。但在一个域名的网页中的一段js代码发送ajax请求去访问另一个域名中的资源,由于的存在导致无法跨域访问,那么ajax就存在这种跨域问题。如果协议一致,域名一致,端口号一致,三个要素都一致,才是同源,其它一律都是不同源接下来我们来谈谈ajax中存在的跨域问题如何解决。

少不入川。的博客 2643

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

AJAX中不跨域和跨域问题的解决方法

接下来写的都是我自己学习中的一点小经验,如果有不对的地方或者有什么好的建议或意见,请前辈们指点一下~    Ajax跨域和不跨域这个问题,几乎2个星期才搞出来,没办法,用到的知识全部自学的,只能百度一点点解决问题。    前端页面我是用html5+css3写的,引进jquery mobile,这个我也要百度慢慢学习。    大学四年白学习了,一直以为前端页面不能调式,每次写代码都是很

u012354540的博客 5577

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

AJAX跨域

一、什么是AJAX跨域问题、产生AJAX跨域问题的原因 什么是AJAX跨域问题 简单来说,就是前端调用后端服务接口时 如果服务接口不是同一个域,就会产生跨域问题 AJAX跨域场景 前后端分离、服务化的开发模式 前后端开发独立,前端需要大量调用后端接口的场景 只要后端接口不是同一个域,就会产生跨域问题 跨域问题很普遍,解决跨域问题也很重要 AJAX跨域原因 浏览器限制:浏览器安全校验限制 跨域(协议、域名、端口任何一个不一样都会认为是跨域) XHR(XMLHttpRequest)请求 二、

辛聪明的博客 2362

【AJAX】AJAX的跨域问题

通过超链接、form表单提交、window.location.href、document.location.href、script标签、img标签等方式进行跨域是不存在问题的。但在一个域名的网页中的一段js代码发送AJAX请求去访问另一个域名中的资源,由于同源策略的存在导致无法跨域访问,AJAX就存在这种跨域问题。

qq_63691275的博客 2632

原生AJAX请求以及AJAX跨域问题

说在前面: 传统方法的缺点: 传统的web交互是用户触发一个http请求服务器,然后服务器收到之后,在做出响应到用户,并且返回一个新的页面,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。这个做法浪费了许多带宽,由于每次应用的交互都需要向服务器发送请...

我的博客 3113

解决ajax请求跨域,解决ajax请求跨域

跨域大部分需要通过后台解决,引起跨域的原因:3个问题同时满足 才可能产生跨域问题,即跨域(协议,主机名,端口号中有一个不同就产生跨域)下面是解决方法方法一// ajax请求跨域/**解决ajax跨域----jsonp*/function httpReq() {$.ajax({type:"get",//必须是get请求url: "/testJsonp",data: "data",dataType:"...

weixin_42303721的博客 2893

$.ajax 如何跨域,Ajax 跨域如何实现

ajax简介AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,...

weixin_30737081的博客 1538
上一篇: java并发编程之ThreadPoolExecutor
下一篇: java中重写equals方法
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值