月份: 2017-01

PHP Ajax 跨域问题最佳解决方案

本文通过设置Access-Control-Allow-Origin来实现跨域。
例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com。
如果直接使用ajax访问,会有以下错误:
XMLHttpRequest cannot load http://server.runoob.com/server.php. No ‘Access-Control-Allow-Origin’ header is present on the requested resource.Origin ‘http://client.runoob.com’ is therefore not allowed access.

1、允许单个域名访问
指定某域名(http://client.runoob.com)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:
header(‘Access-Control-Allow-Origin:http://client.runoob.com’);

2、允许多个域名访问
指定多个域名(http://client1.runoob.com、http://client2.runoob.com等)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:
$origin = isset($_SERVER[‘HTTP_ORIGIN’])? $_SERVER[‘HTTP_ORIGIN’] : ”;  

  

$allow_origin = array(  

    ‘http://client1.runoob.com’,  

    ‘http://client2.runoob.com’  

);  

  

if(in_array($origin, $allow_origin)){  

    header(‘Access-Control-Allow-Origin:’.$origin);       

3、允许所有域名访问
允许所有域名访问则只需在http://server.runoob.com/server.php文件头部添加如下代码:
header(‘Access-Control-Allow-Origin:*’); 

用js方法限制文字个数,文字溢出省略号。自己写了一个限制容器文字长度的jQuery插件。​

用js方法限制文字个数,文字溢出省略号。自己写了一个限制容器文字长度的jQuery插件。

自己写了一个限制容器文字长度的jQuery插件,用起来还是很方便的。

/**
 * $.txtCur();
 * @charset utf-8
 * @extends jquery.1.8.3
 * @example
 * $('.info').txtCur({n:50});
 * $('.info').txtCur({n:50,z:'...',isTitle:1});
 */
(function($) {
    $.fn.extend({
        txtCur: function(options) {
            //默认参数
            var defaults = {
                /**截取长度 */
                n: 60,
                /*结尾添加字符*/
                z: '...',
                /*是否在标签上 添加 title 属性*/
                isTitle: true

            }
            var options = $.extend(defaults, options);
            return this.each(function() {
                var o = options;
                var $this = $(this);
                var s = $this.text(),
                s = $.trim(s); //去掉收尾空格
                l = s.length,
                n = o.n; //设置字符长度为18个 
                if (l > n) {
                    //文本所有内容用a标签的title属性提示文本全部内容
                    if (o.isTitle) {
                        $(this).attr("title", s);
                    }
                    s = $this.text(s.substring(0, n) + o.z);
                }
                /**/

            });
        }
    });

})(jQuery);

//调用方法

<span txtCur="10">我是文字我是文字我是文字我是文字我是文字</span>
<script type="text/javascript">
$(function() {
    $('[txtCur]').each(function() {
        var $that = $(this);
        var maxNum = $that.attr('txtCur');
        $that.txtCur({
            n: maxNum
        });
    })
})
</script>

js判断是否在iframe和禁止网页在iframe中显示

js判断是否在iframe和禁止网页在iframe中显示

如果也没在frame框架中打开,则在顶层窗口中打开啊

<script type="text/javascript">
    if (self != top) { top.location.href=location.href; } 
</script>

js判断在iframe里:

//方式一    
if (self.frameElement && self.frameElement.tagName == "IFRAME") {    
         alert('在iframe中');    
}    
//方式二    
if (window.frames.length != parent.frames.length) {    
         alert('在iframe中');    
}    
//方式三    
if (self != top) {      
         alert('在iframe中');    
}  

  

防止网页被别站用iframe引用:

通过js防止:

//方式一    
if (self.frameElement && self.frameElement.tagName == "IFRAME") {    
         location.href="about:blank";   
}    
//方式二    
if (window.frames.length != parent.frames.length) {    
         location.href="about:blank";  
}    
//方式三    
if (self != top) {      
         location.href="about:blank";   
}

通过header配置防止:
php配置:

header("X-Frame-Options:deny");  
header("X-Frame-Options:SAMEORIGIN");  

Nginx配置:

add_header X-Frame-Options SAMEORIGIN  

Apache配置:

Header always append X-Fram-Options SAMEORIGIN  

IIS配置:

X-Frame-Options:
DENY:禁止当前页面放在IFrame内
SAMEORIGIN:在同源情况下可以使用IFrame内
ALLOW-FROM http://a.com/:在a.com的域名内可以使用Iframe

通过meta设置:

<meta http-equiv="X-Frame-Options" content="deny">