- 浏览: 594516 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
青春依旧:
html5教学哪家强!当然要上华清远见!
深入理解浏览器兼容性模式 -
ashur:
真机智,看得我都笑自己了
js 字符串转dom 和dom 转字符串 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
solr第一弹 autocomplete(自动补全) -
FakLove:
连线如何删除啊
基于html5 的拖拽连线 -
FakLove:
连线可以再删除吗?
基于html5 的拖拽连线
document.domain = "css88.com"; var createAjaxIframe={ appIframe: function(iframeId, iframeSrc){ var iframe = document.createElement("iframe"); iframe.src = iframeSrc// "http://css88.com/demo/domain/iframe.html"; iframe.id = iframeId; iframe.style.display = "none"; if (iframe.attachEvent) { iframe.attachEvent("onload", function(){ createAjaxIframe.domainAjax(iframeId); }); }else { iframe.onload = function(){ createAjaxIframe.domainAjax(iframeId); }; } document.body.appendChild(iframe); }, domainAjax: function(iframeId){ var iframeDom = document.getElementById(iframeId).contentWindow.$; iframeDom.getJSON("http://css88.com/demo/iframe-domain/city.html", function(date){ var cityOption = ""; for (i = 0; i < date.length; i++) { cityOption += date[i].c_name + "--" + date[i].c_value + "<br />" } $("#test").html(cityOption); }); } }; createAjaxIframe.appIframe("iframe","http://css88.com/demo/iframe-domain/iframe.html");
使用<script>标签解决ajax跨域:
这个方法是利用<script>标签中的src来query一个aspx获得response,因为<script>标签的src属性不存在跨域的问题。
举个例子来让大家看得更清楚一点吧:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Ajax跨域问题</title> <script type="text/javascript" src="" id="getAspx"> </script> <script type="text/javascript"> function get(url) { var obj = document.getElementById("getAspx"); obj.src = url; (obj.readStatus == 200) { alert(responseVal);//如果成功,会弹出Dylan } } function query() { get(getDemo.aspx); } </script> </head> <body> <input type="button" value="Ajax跨域测试" onclick="query();"/> </body> </html>
getDemo.aspx后台代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace LearnJS { public partial class getDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("var responseVal='Dylan'"); } } }
这个方法又叫做ajaj或者ajax without xmlHttprequest,把x换成了j,是因为使用了<script>标签而没有用到xml和xmlHttprequest的缘故。这种方法似乎有点“另类”,哈哈。
jquery解决ajax跨域问题:
<html> <head> <title>JQuery学习</title> <script src="jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ var oBtnTest = $("#btnTest"); oBtnTest.click(function(){ oBtnTest.disabled = true; var oResult = $("#result"); oResult.html("loading").css("color","red"); jQuery.getScript("http://www.csdn.com/test/js.txt", function(){ oResult.html("name:" + Dylan.name + "<br/>email:" + Dylan.email).css("color","black"); oBtnTest.disabled = false; }); }); }); </script> </head> <body> <button id="btnTest">BtnTest</button> <div id="result"></div> </body> </html>
远程服务器端js.txt中的内容为:
var Dylan= {name:"Dylan",email:Dylan@163.com}
笔者感觉这种方式更加简洁。呵呵。当然,读者可以根据实际情况,任意选择实现方式。
为什么会产生跨域的问题主要原因是由于js在设计时的同源策略
javascript 同源策略:
同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性。这个策略可以追溯到 Netscape Navigator 2.0。
Mozilla 认为两个页面拥有相同的源,如果它们的协议、端口(如果指明了的话)和主机名都相同。下表给出了相对http://store.company.com/dir/page.html同源检测的结果:
http://store.company.com/dir2/other.html |
成功 | |
http://store.company.com/dir/inner/another.html |
成功 | |
https://store.company.com/secure.html |
失败 | 协议不同 |
http://store.company.com:81/dir/etc.html |
失败 | 端口不同 |
http://news.company.com/dir/other.html |
失败 | 主机名不同 |
在同源策略中有一个例外,脚本可以设置 document.domain
的值为当前域的一个后缀,比如域store.company.com的后缀可以是company.com。如果这样做的话,短的域将作为后续同源检测的依据。例如,假设在 http://store.company.com/dir/other.html
中的一个脚本执行了下列语句:
document.domain = "company.com";
这条语句执行之后,页面将会成功地通过对 http://company.com/dir/page.html
的同源检测。而同理,company.com
不能设置 document.domain
为 othercompany.com
.
发表评论
-
浏览器事件是冒泡还是捕获
2016-07-27 16:37 3037这是三种事件处理的模型 (1)冒泡型事件:事件按照从最特定 ... -
javascript 编程反思1 new 原理
2016-04-27 14:05 0我们在定义对象的时候通常使用两种方式 1:通过new 关键 ... -
javascript 设计模式1 单例模式
2015-06-15 15:10 0... -
facebook html5开发app 失败的原因,
2015-06-08 11:56 1965Here’s why the Facebook iOS a ... -
jQuery zepto 用法区别
2015-05-22 11:50 0以前都是用jQuery 因为移动项目中在使用zepto 基本 ... -
js 加载机制和defer async用法
2015-05-15 17:45 0这是今天我一个 ... -
grunt 不是内部命令
2015-05-04 19:21 1464grunt 不是内部命令!! ... -
你不知道的URL中#井号用法
2015-02-10 12:36 7095URL 中 # 井号的用法 ... -
JS 伪数组原理详解
2014-12-01 11:24 2495jav ... -
jquery 滚动条插件nanoScroller 的用法
2014-11-27 11:17 5709scroller 插件nanoSc ... -
h5,hybrid 开发中问题汇总
2014-10-17 11:26 8222H5开发问题总结 和jqu ... -
backbone中的 reuter 和histroy
2014-10-13 10:45 632Router和History (路由控制) Back ... -
animate 技术分析 raphael
2014-07-28 16:40 0Animate 什么是animate,一般我 ... -
Raphaeljs 插件实现任意SVG节点加载
2014-07-14 09:26 8642SVG 和Raphael http://rap ... -
ECMAScript 5
2014-07-08 14:36 1063新版本在给基本库带来 ... -
jQueryUI Widget 代码详解
2014-07-07 12:20 0为什么需要研究JqueryUI 中Widget 的代码 ... -
typescript 用法介绍
2014-07-01 09:58 1241前言 Typescript的形態 如何定義va ... -
window.eval 与eval 区别
2014-06-27 10:57 1092它们之间有区别吗? 开发过程中似乎很少有人去加个额外的win ... -
jQuery 学习分析系列1 jQuery是个什么东西
2014-06-23 10:06 0jQuery 的基本结构 过去使用jQuery ... -
Sizzle 引擎--原理与实践3
2014-06-18 14:05 792Sizzle引擎--原理与实践(三) 查找的入口对 ...
相关推荐
以上就是C#和Ajax跨域通信的基本原理和实现方法。在实际应用中,还需考虑安全性,谨慎设置允许跨域的源,以及是否允许携带Cookie等认证信息。通过理解并正确实施这些策略,你可以确保C#服务器与任何合法源的前端应用...
然而,现代Web应用中,前端和后端往往部署在不同的服务器上,这就产生了跨域需求。 jQuery的$.ajax()方法是实现跨域Ajax请求的核心。$.ajax()可以接受一系列参数,其中关键的两个是`url`(指定要请求的远程服务地址...
总的来说,解决Ajax跨域访问的方法多种多样,选择哪种取决于具体的应用场景和兼容性需求。在现代开发中,CORS通常是最推荐的解决方案,因为它提供了更安全、可控的跨域访问机制。然而,对于旧版浏览器或特定需求,...
标题“用代理避免ajax跨域请求(手机验证码)”指出了解决这个问题的一种策略,即利用代理服务器来规避浏览器的同源策略限制。下面我们将深入探讨这个主题。 首先,我们了解什么是跨域请求。在Web开发中,由于...
然而,随着Web应用的发展,跨域通信的需求日益增加,为此,出现了多种解决Ajax跨域的方法。 1. **什么是Ajax跨域** Ajax跨域是由于浏览器的同源策略限制,使得JavaScript无法通过Ajax请求获取或发送不同源的数据。...
但是随着 Web2.0 和 SNS 的兴起,Web 应用对跨域访问的需求也越来越多,为此 W3C 工作组中的 Web Applications Working Group 发布了一个 Cross-Origin Resource Sharing(跨域资源共享规范)推荐规范来解决跨域请求...
AJAX跨域请求是指当一个网页从一个域名下的服务器请求另外一个域名下的资源时,由于浏览器的同源策略,可能会被拒绝访问,产生跨域问题。同源策略是浏览器的一个安全机制,它要求网页的脚本只能访问和操作与该脚本...
本文将详细介绍跨域访问产生的原因,并给出具体的解决方案及其示例代码。 #### 二、同源策略 同源策略(Same-origin policy)是Web安全的一项基本政策,它的主要目的是保护用户的数据安全,防止恶意网站通过脚本...
###Ajax跨域访问和*** Web API 2(Cors) 在了解如何配置CORS之前,我们需要先了解几个关键点: 1. **同源策略**:浏览器安全策略的一部分,只有相同协议、域名和端口的请求才被视为同源。跨域请求通常不会被执行,...
AJAX跨域请求问题是在开发Web应用时经常遇到的一个问题。所谓跨域请求,指的是浏览器出于安全考虑,限制了前端JavaScript代码发起的AJAX请求只能访问与发起请求的页面同一个域下的资源。当需要从一个域名的资源请求...
首先,要理解ajax异步跨域问题产生的根本原因。由于浏览器的同源策略,当请求的URL不符合同源条件时,浏览器会拦截返回的响应。即使后端服务器成功处理请求并返回数据,这些数据也不会被前端JavaScript代码获取。 #...
知识点一:跨域页面访问的定义和原因 跨域页面访问是指在多个系统集成的情况下,主系统以 iframe 或 frameset 的方式将其他子系统的页面嵌进来,从而导致浏览器阻止 iframe 或 frameset 的 cookie,进而使 SESSION ...
总之,解决Ajax跨域请求数据时cookie丢失的问题通常涉及到CORS设置、客户端和服务器端的配合以及对各种跨域解决方案的理解和应用。正确配置后,前端和后端可以无缝协作,实现跨域请求时携带用户认证信息。在实际开发...
在jQuery中,可以使用`$.getJSON()`和`$.ajax()`两个方法来实现JSONP跨域请求。首先,通过`$.getJSON()`方法实现JSONP的示例代码如下: ```javascript var url = "***"; $.getJSON(url, { "age": 21, "name": ...
5. **跨域问题**:由于同源策略限制,Ajax请求通常只能访问同源的资源,但可以通过JSONP或CORS等方式实现跨域请求。 6. **错误处理**:处理网络异常、服务器错误等情况,确保应用的健壮性。 7. **Ajax库和框架**:...
9. **Progressive Enhancement**:为了确保对非JavaScript用户的兼容性和可访问性,开发Ajax应用时应遵循渐进增强原则,即首先提供基本功能,然后通过JavaScript添加增强效果。 10. **移动设备上的Ajax**:随着移动...
然而,随着Web应用的复杂性和交互性增强,有时开发者需要在不同的源之间进行数据交换,这就产生了跨域访问的需求。对于像Ajax这样的异步请求,同源策略会成为阻碍。在JavaScript中,XMLHttpRequest对象默认遵循同源...