当前位置: 首页 > news >正文

郑州做个人网站的公司网页设计结构

郑州做个人网站的公司,网页设计结构,广州全网络营销,河北新闻最新消息10条几年前#xff0c;网站开发者都因为ajax的同源策略而撞了南墙。当我们惊叹于XMLHttpRequest对象跨浏览器支持所带来的巨大进步时#xff0c;我们很快发现没有一个方法可以使我们用JavaScript实现请求跨域访 问#xff0c;对此我们哀叹不已。每个人在他们自己的网站上建立代理… 几年前网站开发者都因为ajax的同源策略而撞了南墙。当我们惊叹于XMLHttpRequest对象跨浏览器支持所带来的巨大进步时我们很快发现没有一个方法可以使我们用JavaScript实现请求跨域访 问对此我们哀叹不已。每个人在他们自己的网站上建立代理which was the onset of a new host of open redirect problems来摆脱这种限制。虽然开发者利用服务器代理和其它技巧避开了这种限制而在社区的抗议者允许ajax在本地跨域调用。许多人还没意识到 当前几乎所有的浏览器Internet Explorer 8 Firefox 3.5 Safari 4和 Chrome都可通过名为Cross-Origin Resource Sharing的协议支持ajax跨域调用。 跨域资源共享CORS Cross-Origin Resource Sharing (CORS)是W3c工作草案它定义了在跨域访问资源时浏览器和服务器之间如何通信。CORS背后的基本思想是使用自定义的HTTP头部允许浏览器和服务器相互了解对方从而决定请求或响应成功与否。 对一个简单的请求没有自定义头部要么使用GET要么使用POST它的主体是text/plain,请求用一个名叫Orgin的额外的头部发送。Origin头部包含请求页面的头部协议域名端口这样服务器可以很容易的决定它是否应该提供响应。 Origin: http://www.nczonline.net 如果服务器确定请求被通过它将发送一个Access-Control-Allow-Origin头部响应发送请求的同一个源如果是一个公共资源则返回“*”。如 Access-Control-Allow-Origin: http://www.nczonline.net   如果头部丢失或者源不匹配那么浏览器将拒绝请求。如果一切顺利浏览器将处理请求。注意请求和响应都不包括cookie信息。 先前提到的所有浏览器都支持这些简单的请求。FF3.5 Safari 4和chrome通过使用XMLHttpRequest对象支持其使用。当尝试在不同域打开一个资源时不需任何代码这个行为会自动触发。如 var xhr  new XMLHttpRequest(); xhr.open(get, http://www.nczonline.net/some_resource/, true); xhr.onload  function(){  //instead of onreadystatechange     //do something }; xhr.send(null); 在IE8中也是一样用同样的方式你需要使用XDomainRequest object。 var xdr  new XDomainRequest(); xdr.open(get, http://www.nczonline.net/some_resource/); xdr.onload  function(){     //do something }; xdr.send(); Mozilla小组在他们关于CORS的留言中建议应该检查withCredentials属性的存在性从而决定浏览器是否通过XHR支持CORS。你可以合并XDomainRequest 对象的存在性来支持所有的浏览器 function createCORSRequest(method, url){     var xhr  new XMLHttpRequest();     if (withCredentials in xhr){         xhr.open(method, url, true);     } else if (typeof XDomainRequest ! undefined){         xhr  new XDomainRequest();         xhr.open(method, url);     } else {         xhr  null;     }     return xhr; }   var request  createCORSRequest(get, http://www.nczonline.net/); if (request){     request.onload  function(){         //do something with request.responseText     };     request.send(); } Firefox, Safari, 和Chrome的XMLHttpRequest对象与IE的XDomainRequest对象有着相似的充分的接口这些模式运行的很好。常见的接口属性/方法: · abort()——用来终止已在进程中请求。 · Onerror()——替代onreadystatechange方法来探测错误。 · Onload()——替代onreadystatechange方法来探测成功。 · responseText——用来取得响应地文本。 · send()——用来发送请求。 Preflighted请求 除了GET或POST通过一种称之为preflighted请求的服务器透明验证机制CORS允许使用自定义的头部和方法以及不同主体内容类型。当你尝试使用高级选项中的一个来试着建立一个请求时这时就建立了一个preflighted请求。该请求使用可选的方法并发送如下头部 · Origin——与简单请求相同。 · Access-Control-Request-Method——请求将要使用的方法。 · Access-Control-Request-Headers——可选一个逗号分开的正被使用的自定义头部列表。 例子假定一个头部自定义为NCZ的POST请求 Origin: http://www.nczonline.netAccess-Control-Request-Method: POSTAccess-Control-Request-Headers: NCZ 在请求期间服务器能决定是否允许这类请求。服务器通过在响应中发送以下头部来与浏览器通信。 · Access-Control-Allow-Origin——与简单请求相同。 · Access-Control-Allow-Methods——用逗号分开的可接受的方法列表。 · Access-Control-Allow-Headers——用逗号分开的服务器可接受的头部列表。 · Access-Control-Max-Age——preflighted 请求应该被缓存的时间。 如 Access-Control-Allow-Origin: http://www.nczonline.netAccess-Control-Allow-Methods: POST, GETAccess-Control-Allow-Headers: NCZAccess-Control-Max-Age: 1728000 preflighted 请求一旦作出结果将按响应中规定的时间缓存下来第一次做出这样的请求你将引发一次额外的HTTP请求。 Firefox 3.5, Safari 4和Chrome都支持preflighted 请求IE8则不支持。 Credentialed请求 默认状态下跨域请求不提供证书cookie、HTTP身份验证、客户端SSL证书。你可以规定一个请求应该通过设置withCredentials属性为true来发送证书。如果服务器允许credentialed请求那么它将用下面的头部作出响应 如果一个credentialed请求被发送这个头部不会作为响应地一部分被发送。浏览器不会将响应传递给JavaScript(responseText是一个空字符串状态为0onerror()被调用)。注意服务器也能发送这个HTTP头部作为preflight响应的一部分以此来表明该源允许发送credentialed请求。 Access-Control-Allow-Credentials: true IE8不支持withCredentials属性Firefox 3.5, Safari 4和Chrome都支持它。 结论 在 现代web浏览器中对跨域AJAX调用有许多可靠地支持然而大多数开发者仍没意识这些强大的功能力。只需在JavaScript和服务器端做一点额外 的工作以保证正确的头部被发送即可使用它。在允许高级请求和credentialed请求方面IE8的执行有些滞后但希望它对CORS的支持将会继续 改进。如果你想了解更多我强烈建议你检查Arun Ranganathan的示例页。
http://www.yutouwan.com/news/61223/

相关文章:

  • 做海报的网站知乎nodejs可以做企业网站吗
  • 兼职刷客在哪个网站做中企动力做的网站后台怎么登录
  • 网站首页适配规则公司ppt简介模板
  • 泉州做网站哪家好喀什建设网站
  • 网站开发和ui的区别秦皇岛属于哪个省哪个市的
  • 义乌制作网站要多少钱51找呀模板网
  • 网站备案资料 下载企业网站上的二维码怎么获得
  • 做前端网站用什么软件写代码新郑龙湖网站建设
  • 网页小游戏的网站网站模板怎么用呢
  • 怎么做网站服务器系统免费logo生成器在线制作
  • 免网站域名注册网站开发众包平台
  • 遵义本地网站网页无法访问qq可以登陆
  • 专门做二手手机的网站有哪些wordpress 文章图片居中
  • 做网站最低服务器配置黄州做网站的
  • 青海省网站建设高端wordpress调用标签大全
  • 书店建设网站的能力wordpress 目录seo
  • 免费源码分享网站网站建设与管理这门课程的介绍
  • 长沙专业外贸建站公司简述网站栏目管理
  • 如何做一间公司的网站网站建设宣传的目的
  • 南通做网站优化分销商城系统要具备哪些
  • 建设厅网站的投诉可以哪里查10个免费自学网
  • 手机网站做分享到朋友圈热搜关键词
  • 建立网站的流程多少钱响应式网站模板 食品
  • 建站过程网站建设的流程步骤
  • 客户做网站一定报价怎么办中建集团官网
  • 哪个网站做公司业务广告效果好专业做毕业设计网站设计
  • 网站建设运维标准怎么搜索关键词
  • 广州网站建设推广专家0735郴州新网招聘
  • 网站优化是怎么做的营销型网站建设定制网站建设
  • 郑州网站关昆明做网站找天度