Changes between Initial Version and Version 1 of jslib


Ignore:
Timestamp:
02/09/2015 02:56:38 PM (11 years ago)
Author:
liuxulin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • jslib

    v1 v1  
     11、跨域 
     2JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把涉及到跨域的一些问题简单地整理一下: 
     3首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象 
     4在跨域问题上,域仅仅是通过URL来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。 
     5解决跨域的方法有几种有兴趣的可以自己网上找下资料,这里用的是windowname方式: 
     6 
     7     跨域用的两个JS库 
     8 
     9 原生:  http://js.3conline.com/js/common/windowname.js [[BR]] 
     10 依赖JQ: http://js.3conline.com/js/common/jQuery.windowName.plugin2.js  
     11区别在于 第一个是原生 js 的 也就不不依赖 jq 版本 你用不用 jq 都可以用 
     12第二个是 jq 版本的 windowname 他依赖1.42以下(包括1.42)的 jq 所以高版本就挂了[[BR]] 
     13[[BR]]原生库例子: 
     14  postCORS(url, callback, data, extra)[[BR]] 
     15  @param url 待提交页面的地址[[BR]] 
     16  @param callback 回调函数,回传两个参数,data(string) 和 extra(isXhr: boolean)[[BR]] 
     17  @param data 待提交的键值对[[BR]] 
     18  @param extra {withCookie: true} 需要 cookie 验证的时候加上该参数,其他情况无需添加[[BR]] 
     19 
     20  关于跨域携带cookie,接口需要返回响应头  [[BR]]  Access-Control-Allow-Credentials:true 以及 Access-Control-Allow-Origin: request.headers['origin'](需要显式指定请求头的 origin 字段) 
     21  [[BR]]默认的(无需携带cookie)只需要返回 Access-Control-Allow-Origin: * 
     22 
     23  @example 
     24      postCORS('http://127.0.0.1/action.php', function(data, extra) { 
     25            $('msg').value += '\n\n' + data; 
     26          }, 
     27         { 
     28           'key': 'happy', 
     29           'v': 'not' 
     30         }, 
     31                  {withCookie: true,charset: 'req_enc=utf-8'} 
     32        );