Web开发网 > 站内搜索 > AJAX 跨域解决办法
Access-Control-Allow-Origin响应头可以允许哪些域名能发送ajax 请求本页面,Access-Control-Allow-Origin响应头一次只能设置一个域名,如果要控制只允许指定的多个域名能跨域请求页面,要如何设置Access-Control-Allow-Origin响应头。解决办法 建立一个允许跨 域 请求的域名列表,然获取请求来源域名,和列表进行对比,如果来源域名存在允许的跨 域 请求域名列表里面,再添加Access-Control-Allow-Origin响应头。下面为一个C# ashx的示例 public void ProcessRequest(Httphttp://www.w3dev.cn/article/20130830/ajax-cross-domain-request-control-by-Access-Control-Allow-Origin.aspx
Ajax 跨 域 访问的问题出于安全性考虑,浏览器禁止ajax 跨 域 访问,但当有遇到这一类需求时就直接否则ajax 直接访问这一方法。当然方法一定是有的,在网上一搜能找到一堆解决方案,如动态创建iframe获取结果在传回处理的,或者用script的src属性绕过的,还有通过本地代理的,我感觉本地代理方式是一种比较完美的方法,直接通过ajax 像本地服务请求,本地服务再向远程服务获取结果,然后传回客户端,当然多了中间一层代理,但过程还是ajax 方式的,同时本地的 service可以任意处理出想要的结果。上回说到使用jQuery跨 域 调用JSON数据,但是如果对方不提供JSON数据,则需要用另外的方法实现跨 域 http://www.w3dev.cn/article/20100120/1298.aspx
======xhr.onreadystatechange=function(){if(xhr.readyState==4)alert(xhr.responseText);}xhr.send(null); 建立一个网站,打开8080端口和7070端口,浏览器通过8080端口访问http://192.168.1.68:8080/x.html页面,修改//=====================================中的代码,刷新查看效果。相关ajax 跨 域 解决方案如何设置IIS网站的端口号ajax 跨 域 问题解决办法 如何解决ajax 跨 域 的问题Javascript跨 域 和ajax 跨 域 解决方案http://www.w3dev.cn/article/20100304/1775.aspx
function test(){alert(xml)}/SCRIPT BODY INPUT TYPE=button value=CLICK ME onclick=test() /BODY /HTML后台程序get.phpecho 'var xml =asdf;';当你点击按钮的时候就会去服务器那去你需要的js,但加在完成后就可以自己的使用变量xml了,运行代码后你会得到一个对话框显示asdf;相关文章:最新AJAX (XMLHttpRequest)进行跨 域 请求方法详解Javascript跨 域 和Ajax 跨 域 解决方案如何解决ajax 跨 域 的问题FireFox下端口不一致导致跨 域 http://www.w3dev.cn/article/20090701/ajax-cross-domain-solution.aspx
geProxy.setItem('showbo')); }/scriptlocalStorage,sessionStorage跨 顶级域名共享解决办法 跨 顶级域名需要html5的postMessage(IE8也支持此方法,但是IE8不支持localStorage,sessionStorage),假设顶级域名为abc.com,bcd.com。。。。其他顶级域名 思路:和二级域名localStorage跨 域 二级域名共享解决办法 一样,任意选择一个域名,在这个域名下建立代理页面,然后需要共享localStorage,sessionStorage的页面输出iframe加载此代理http://www.w3dev.cn/article/20170613/localStorage-sessionStorage-cross-domain-tabpanel-share.aspx
默认firefox中ajax 是不允许跨 域 请求数据的,要想firefox下ajax 允许请求跨 域 ,有2中方法。 第一种,修改firefox配置,将signed.applets.codebase_principal_support项目为true(默认为false)。在firefox的地址栏中输入about:config,并找到signed.applets.codebase_principal_support,将其设为true,如下下图所示但这种方法经过实现,仍然无法访问其他域 的url,不知是不是新版的firefox把这个给屏蔽了。就算这种方法可行,也尽量不使用这种需要配置firefox的方法,http://www.w3dev.cn/article/20151021/config-firefox-allow-cross-site-request.aspx
-files ,这样本地ajax 请求就不会报跨 域 错误了。(注意如果给chrome添加多个启动参数,每个启动参数--之前要有空格隔开,如C:\Program Files\Google\Chrome\Application\chrome.exe --enable-file-cookies --allow-file-access-from-files)增加启动参数后,需要关闭所有的已经打开的chrome,然后再通过添加参数的快捷方式打开chrome,将html拖进chrome浏览器中运行才行,要不启动参数无效。 如何添加chrome启动参数以便支持file协议下的ajax 请求,具体看这个:chrhttp://www.w3dev.cn/article/20141031/file-protocol-config-chrome-support-ajax-request.aspx
jquery1.5+重写过ajax 代码,增加了跨 域 判断(自动判断ajax 请求的url地址是否和当前访问的页面同源,jquery1.4-版本没有增加跨 域 判断,所以直接发送ajax 请求,这样就和浏览器的安全设置有关了),jquery1.5+如果跨 域 访问并且不支持跨 域 请求(这些都是jquery代码自动判断的),就不会发送ajax 请求(所以浏览器安全设置被忽略),导致没有触发任何事件,所以jquery1.4+能在ie配置安全区域的通过域 访问数据源后可以跨 域 请求,而jquery1.5+就完全没有反应。 具体可以参考http://code.jquery.com/jquery-1.10.2.js未压http://www.w3dev.cn/article/20130813/jquery1.5-upper-version-cros-request-in-ie-No-reaction.aspx
网站发布,通过http协议访问时,由于浏览器安全问题1)js不允许访问本地文件2)ajax 请求也不能访问跨 域 的页面。3)firefox下端口不一致也会导致跨 域 解决办法 就是做代理或者使用jsonp操作。参考:AJAX 跨 域 解决办法 网站未发布,本地file协议测试【就是直接双击打开或者拖拽进入浏览器中】时,有以下几种情况 假设目录结构如下root ajax ajax .html --ajax 请求文件 1.html files 1.html folder 1.html 1.html1)webkit核心的浏览器,如chrome,只能访问自己(或者可以访问其他域http://www.w3dev.cn/article/20130522/ajax-can-access-local-file.aspx
-//W3C//DTD XHTML 1.0 Transitional//ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhtml xmlns=http://www.w3.org/1999/xhtmlhead title孟宪会之AJAX 跨 域 请求测试/title/headbody input type='button' value='开始测试' onclick='crossDomainRequest()' / div id=content/div script type=texhttp://www.w3dev.cn/article/20100304/1777.aspx
层frame)的方法,来实现跨 域 的数据访问。即post到frame的子frame里面。后记:这个例子不过是一些特殊的情况下跨域访问的解决方案,也许对你会有所帮助。因为方法简单,应用也就有很多局限性。(不过偶倒是觉得这样很象ajax 哦,页面没有刷新,同样完成了一次服务端的数据处理^o^)。相关网文资料:web应用的跨 域 访问解决方案做过跨越多个网站的Ajax 开发的朋友都知道,如果在A网站中,我们希望使用Ajax 来获得B网站中的特定内容,如果A网站与B网站不在同一个域中,那么就出现了跨 域 访问问题。Ajax 的跨 域 访问问题是现有的Ajax 开发人员比较常遇到的问题。IE对于跨 域 访问的处理是,弹出警告框,提http://www.w3dev.cn/article/20100120/1299.aspx
sponseXML分析下回传的xml文件。因为ajax 原本就是用xml作为信息载体的。。。。。。ajax 英文名原本就是异步javascript和xml【asynchronous javascript and xml】如果不会解析xml文件,可以参考这篇文章JavaScript解析XML的方法总结下面是一些csdn上出现乱码的文章和解决办法 ,还未解决的看看,是否和你的如出一辙。在FireFox浏览器中asp.net+AJAX 传输的中文字符串到服务器端后乱码的问题!!!!请教ajax 返回乱码就列上面两个了,要查找更多的,查看这个查询连接,都是ajax 出现乱码的问题。http://so.csdn.http://www.w3dev.cn/article/20090702/ajax-summary-of-issues.aspx
chrome扩展实现2个不同域名跨 域 通信示例,以下代码通过向百度搜索页面中插入iframe加载本网站页面,然后实现相互发送信息(当然可以在对应页面实现dom的操作,示例仅输出相互发送的信息),效果如下chrome扩展开启开发者模式后可以直接加载扩展程序manifest.json { name: 测试, manifest_version: 2, version: 1.0, author:showbo,http://www.w3dev.cn, description: 测试, content_scripts: [{matches: [http://www.w3dev.cn/article/20220321/chrome-extension-cross-domain-communication-demo.aspx
ipt $(function () { $.getScript('1.js');//没有跨 域 ,jquery会自动通过ajax 加载,而不是script标签 $.getScript('http://www.w3dev.cn/js/comm.js');//跨 域 了,只能使用script标签加载,所以source选项卡有记录 $.get('11.css');//css暂时没找到解决办法 ,不过可以通过NetWork选项卡找到 })/script 要想chrome开发工具的sources选项卡也记录住xhttp://www.w3dev.cn/article/20151103/chrome-developer-tool-sources-tab-not-show-all-js-file.aspx
统日志里面不再出现下面的错误。1,由于无法创建应用程序域 ,因此未能执行请求。错误: 0x80070005 拒绝访问。2,未能初始化 AppDomain:/LM/W3SVC/1635210705/RootException: System.IO.FileLoadException Message: 未能加载文件或程序集System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a或它的某一个依赖项。拒绝访问。 下面是网上的解决办法 1:安装2.0之后,在IIS的虚拟目录的属性设置中会多http://www.w3dev.cn/article/20150724/IIS-can-not-create-AppDomain-access-deny.aspx
p数据源示例。如果datagrid要加载跨 域 的数据,跨 域 页面提供的数据格式为非jsonp数据,当直接配置datagrid的url启用ajax 加载地址时,即使url返回的数据格式符合datagrid格式的json字符串,由于浏览器安全问题,ajax 是不允许跨 域 请求的(除非设置动态页设置过:Access-Control-Allow-Origin响应头),导致无法获取到数据。要加载跨 域 的数据,需要自己站点做代理页面或者修改跨 域 页面提供jsonp数据。 easyui datagrid要加载jsonp数据源,需要自定义loader配置,通过jquery的ajax 先加载jsonp数据源后,再执行succhttp://www.w3dev.cn/article/20141119/easyui-datagrid-load-cross-domain-jsonp-data.aspx
面),和浏览器是否启用安全-》internet区域的通过域 访问数据源有关系。如果启用了此选项,那么所有跨 域 的页面都可以访问,即使跨 域 的页面没有设置过Access-Control-Allow-Origin响应头。如果禁用了通过域 访问数据源,跨 域 页面设置过Access-Control-Allow-Origin响应头为*,也无法请求,open时就报错。 注意:如果双击运行或者拖拽进入IE浏览器,XMLHttpRequest对象无法请求本地资源,会出现拒绝访问错误,activexobject创建的对象则没有限制,具体参考:网站未发布,ajax 能请求的本地资源有哪些。script/*var xdr=http://www.w3dev.cn/article/20130813/IE-XMLHttpRequest-cros-request-safe-config.aspx
e( p);responseText响应的内容,字符串格式timeout获取或者设置跨 域 请求超时时间,单位毫秒备注 XDomainRequest对象为一个允许脚本连接任何服务器并且交互数据的安全,可信,轻量级数据服务。开发使用 XDomainRequest 对象发送有跨域安全当前ajax 请求。 安全警告: 跨 域 请求(XDRs)匿名保护用户数据,就是说服务器不能确定谁在请求数据。为了保护用户隐私,跨 域 返回的数据不能为敏感或者个人身份识别之类的信息。为了防止泄露数据给恶意的站点,不鼓励启用XDRs请求。 跨 域 请求要页面和服务器之间双方同意才行。使用 XDomainRequest (XDR) http://www.w3dev.cn/article/20130729/XDomainRequest-IE8-cross-domain-ajax-object.aspx
属性的值即可。下面简要介绍如何在 Web 应用中来使用 YQL 服务。在 Web 应用中使用 YQL 服务 由于 YQL 服务提供 REST 接口,在 Web 应用中使用起来非常方便。只需要构造 HTTP GET 请求就可以完成查询操作。YQL 服务支持 JSONP 作为结果返回格式,使得在 Ajax 应用中使用起来更加简单,不需要服务器端的代理,通过 XMLHttpRequest 就可以完成请求。 使用 YQL 服务的 URL 可以根据上面提到的 请求格式来创建,也可以从 YQL 控制台中得到。在 YQL 控制台右上角的The REST query里面包含的就是调用 YQL 服务的 URhttp://www.w3dev.cn/article/20130319/query.yahooapis.com-v1-public-yql-JSONP-API-introduction.aspx
});/script 如果跨 域 数据源不是json格式的,而是html代码,可以用下面的代码获取到跨域页面的html代码,结果如下script type=text/javascript src=http://www.w3dev.cn/rardownload/20130106/20130106170832648.js/script script type=text/javascript src=http://ajax .aspnetcdn.com/ajax /jQuery/jquery-1.4.2.min.js/scriptscript $.ajax ({ url: http://www.w3dev.cn/article/20130228/JSONP-crossdomain-online-httpproxy-api.aspx
ext4支持发送jsonp请求,所以当跨 域 页面支持jsonp操作时,可以使用ext4.0的Ext.data.JsonP来实现跨 域 验证或者获取数据。 jsonp具体的跨 域 原理可以看这个:JSONP跨域 下面为一个简单使用ext4实现跨 域 验证的示例代码,返回客户端一些验证信息。只作为研究使用,安全性基本没有。!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN http://www.w3.org/TR/html4/strict.dtdhtmlhead meta http-equiv=Content-Type content=text/html;http://www.w3dev.cn/article/20130130/ext4-jsonp-cross-domain-verification.aspx
-Allow-Origin 这个 Header, 他是W3C标准里用来检查该跨 域 请求是否可以被通过。 (Access Control Check) 跨 域 实现的过程大致如:从 http://www.a.com/test.html 发起一个跨 域 请求,请求的地址为: http://www.b.com/test.php,如果 服务器B返回一个如下的headerAccess-Control-Allow-Origin: http://www.a.com,那么,这个来自 http://www.a.com/test.html 的跨 域 请求就会被通过。 在这个过程中, request 还会带上这个headerhttp://www.w3dev.cn/article/20121105/access-Control-Allow-Origin-cross-domain-request-danger.aspx
最近在做一个流量统计的东西的时候,偶然发现IE在对iframe里面的页面写Cookie的时候有一些安全限制,导致读取Cookie不成功,找了好长时间的解决办法 ,重要找到如下的办法: 1.页面里的COOKIE不能是浏览器进程的COOKIE(包括验证票和不设置超时时间的COOKIE),否则跨域会取不到.这点做跨域COOKIE的人比较少提到.不过实际上留意下几家大学做的方案,有细微的提到他们的验证模块里的COOKIE是有设置超时时间的. 2.当利用IFRAME时,记得要在相应的动态页的页头添加一下P3P的信息,否则IE会自觉的把IFRAME框里的COOKIE给阻止掉,产生问题.本身不保存自然http://www.w3dev.cn/article/20110218/Cookie-IE-Brower-can-not-read.aspx
当换IE浏览器来查看效果的时候,发现IE只能显示第一个Banner,不能按循序切换。发现跨 域 生成的cookie被IE浏览器给拦截了,晕。。。后面网上查找了下,发现是IE的问题,当跨 域 生成cookie的时候,就是a.com的页面用script加载b.com的生成Banner的动态页时,此时出现跨 域 问题了,如果b.com生成cookie的时候,会被IE浏览器拦截掉。解决这个问题可以通过设置P3P响应头来解决。下面是解决办法 ,不过是用框架的,和script标签也一样。解决方案参考下面的文章IE里Cookie跨 域 不能读取微软公布IE6新增隐私保护功能的详情关于IE6框架iframe或framesethttp://www.w3dev.cn/article/20110218/IE-cookie-save-deny-solution.aspx
frame的高度,如果不进行一些设置,会出现跨 域 的问题。 这里说的是2级域名和对应的顶级域名直接实现跨 域 ,而不是不同顶级域名和2级域名直接的跨 域 。 如我有一个顶级域名/,如果在/中的iframe用remark./2级域名来加载其他信息显示顶级域名或者其他javascript./这种2级域名上,是可以的。但是不能跨 顶级域名,如加载百度或者替他网站的信息,这样通过此办法无法实现跨 域 iframe自动适应高度。在顶级域名一样的情况下,实现2级域名跨 域 控制顶级或者其他2级域名中显示的iframe的高度,可以通过设置document.domain对象实现跨 域 操作iframe。将所有的2级域名都加上schttp://www.w3dev.cn/article/20101220/second-level-domain-cross-domain-iframe-auto-fit-height.aspx
实际上单jQuery还是实现不了跨 域 加载数据的,由于XMLHttpRequest的安全设置,是不允许直接跨 域 的。jQuery的jsonp虽然能跨域,但是还得请求的页面支持才行,如果请求的页面不理会jQuery发送的参数,是无法跨 域 的,实际上来说是获取不到输出的页面内容。 jQuery jsonp跨 域 原理实际就是使用script标签加载配置对象中的跨 域 url,再使用script标签加载之前,会在客户端中注册一个新的函数作为回调函数提供给跨 域 页面使用,然后将函数名称替换掉url中jsoncallback=?后面的问号,最后请求的页面获取发送的回调函数名称,输出类似回调函数名称(json数据)http://www.w3dev.cn/article/20100719/2728.aspx
22.2.1.问题我想把RSLs存放在服务器的不同地方以便在不同域 的应用程序都能访问到。22.2.2.解决办法 Compc工具创建RSL时加上compute-digest参数后,RSL摘要信息会在编译时期链接到RSL时存储到应用程序中。然后创建跨 域 的授权文件引入mxmlc工具的runtime-shared-library-paths选项指定的RSLs位置。22.2.3.讨论一个RSL摘要是一个散列码,被用来确认RSL来自于信任方,已被Flash Player载入。当用compute-digest选项设置为true时创建RSL后,这个摘要会被写进SWC存档的catalog.xml文件中。当你编译http://www.w3dev.cn/article/20100426/2227.aspx
1.新的播放器可以播放存放在几个域名下的作品图片了2.编辑器也能与跨 站点程序进行通讯并使用户同步登录摩豆网了解决方法共享如下:直接在flash中测试影片不会出现跨 域 问题,但如果Flash发布的swf文件,需要如下方法解决。建立一个crossdomain.xml文件放到被访问文件所在服务器的根目录下。以下是xml的代码:XML/HTML代码xml version="1.0"?cross-domain-policyallow-access-from domain="*" /cross-domain-policyjs与flash跨 域 调用:需要在FLASH脚本调用处加上参数: always",该参数http://www.w3dev.cn/article/20090709/434.aspx
则,而不是超域 匹配规则。因此,被访问的文件(即使该文件以 早于 Flash Player 7 的 Flash Player 版本为目标播放器发布)必须显式允许跨 域 或子域 访问;其次,在某一使用安全协议 (HTTPS) 的站点上承载的文件必须显式允许从使用不安全协议(HTTP 或 FTP)的站点承载的文件的访问。 所以当使用loadMovie进行跨 域 访问时,需要调用 System.security.allowDomain。如果LocalConnection 接收方是 HTTPS SWF 文件,而发送方不是,则调用 allowInsecureDomain。 可以使用下面的代码实现跨 域 访问:Syshttp://www.w3dev.cn/article/20090709/435.aspx
摘自:http://www.cnblogs.com/Ihaveadream/archive/2008/05/02/1178538.htmlCookie有三个属性需要注意一下:1. Domain 域 2. Path 路径3. Expires 过期时间跨 域 操作需要设置域 属性:Response.Cookies("MyCookie").Domain = "cnblogs.com"; (这里指的是泛域名)这样在其它二级域名下就都可以访问到了, ASP 和 ASP.NET 测试通过虚拟目录下访问:我在ASP端做了下测试,.NET的没试, 如果不指定Path属性, 不同虚拟目录下Cookie无法共享将Reshttp://www.w3dev.cn/article/20090701/316.aspx
首页 上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 尾页 1/7页,每页显示30条,共184条相关记录