php+ajax实现多域名跨域登录例子(基于P3P)

 更新时间:2016年11月25日 15:40  点击:1934
在以前如果我们要实现php+ajax实现多域名跨域登录的话很多朋友都碰到无法正常跨域登录问题,下面我来给大家解决跨域名登录问题,有需要的参考。

该同步登陆需求需满足以下三个关键点:
1)A域名下登陆的用户,跳转到B域名下时实现同步登陆;
2)B域名下点击A域名下的退出链接,实现A域名与B域名的同时退出
3)用户直接访问B域名时,可以自动判断A域名下是否存在用户登录,如果存在,则实现B域名下的用户同步登陆。
首先解决跨域的同步登陆登出,有以下可行的解决思路:
1)两个域共享SESSION服务器,即统一的内存服务器,这样两个域下的SESSIONID会相同,会自动无缝实现同步登陆登出;
但该解决方案需要额外的硬件投入,并且需要懂这方面部署的技术人员
2)通过url传递sessionid
3)通过P3P协议获取跨域的SESSION
为解决该需求,我经过查询各种资料,并拟定了自己的一套解决方案,分享给大家,其要点如下:
1)当用户在A域名下登录后,访问A域名下网站时,会ajax请求B域下的js脚本文件,写入B域COOKIE及SESSION,实现B域下登录;
2)当用户在A域名下退出后,访问A域名下网站时,会ajax请求B域下的js脚本文件(同登录参数不同),清除B域COOKIE及SESSION,实现B域下登出;
3)当用户直接访问B域网页时,请求A域下脚本,判断A域下是否存在登录,如果存在,则将COOKIE及SESSION赋值到当前域的网页中,通过ajax实现当前域
COOKIE及SESSION的写入。
我将a域名设定为A域名;B域名设定为B域名。
以下是相关代码:

 代码如下 复制代码

#############a域名ApiController.php #################
 /*
  * 根据当前域(a域名)的cookie信息设置bstv域下的cookie及session
  * 如果为空,则清空处理
  * */
 function setckAction() {
  $clr = $this->_request->getParam("clr");
  $bts_user = ($clr) ? '' : urlencode($_COOKIE['bts_LOGGED_USER']);
  $this->view->assign("bts_user",$bts_user);
 }
 
 /*
  * 提供给bstv域下,获取当前域(a域名)的cookie及session
  * 以脚本变量返回给bstv浏览器端
  * */
 function getckAction() {
  header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
  echo 'var ck="'.$_COOKIE['bts_LOGGED_USER'].'";';
  echo 'var sess="'.$_SESSION['user']['uid'].'";';
  exit();
 }
#############a域名index.php #################
##### 默认指定index.php为登录返回的页面
<script src="http://www.B域名/api/setck?bts_user={$bts_user}"></script>
############# B域名 api.php #################
 
 /*
  * 显示a域名域下的cookie及SESSION
  * 赋值到js变量
  * js 通过ajax写入cookie和session:如果a域名已退出,则bstv做退出处理
  * */
 function getbtsck() {
  include $this->template->getfile('api/getbtsck');
 }
 
 /*
  * a域名域下设置bstv域下的cookie及session
  * 如果为空,则清空处理
  * */
 function setck() {
  header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
 
  $bts_user = trim($_GET['bts_user']);
  if(!empty($bts_user)) {
   setcookie("bts_LOGGED_USER", urldecode($bts_user), time()+3600*24*365, "/", ".B域名");
   $this->cookieLoginLocal(urldecode($bts_user));
  } else {
   setcookie("bts_LOGGED_USER", $bts_user, '-1', "/", ".B域名");
   unset($_SESSION['uid']);
  }
 }
 
 function setsession() {
  $bts_user = trim($_POST['bts_user']);
  if(!empty($bts_user) && empty($_SESSION['uid'])) {
   setcookie("bts_LOGGED_USER", urldecode($bts_user), time()+3600*24*365, "/", ".B域名");
   $this->cookieLoginLocal(urldecode($bts_user));
  } else {
   echo 'uuunset';
   setcookie("bts_LOGGED_USER", $bts_user, '-1', "/", ".B域名");
   //unset($_SESSION['uid']);
  }
 }
 
 function cookieLoginLocal($cookieId){
  $cookieId = explode( '.', base64_decode($cookieId) );
  if ($cookieId[0] !== 'baitianshi' || empty($cookieId[1])) {
   return false;
  } else {
   return $this->loginLocal($cookieId[1],false,1);
  }
 }
 
 function loginLocal($uid,$password=false,$isuid=0) {
  $_SESSION['uid'] = $uid;
  return 1;
 }

############# B域名 getbtsck.html #################
<!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" xml:lang="en">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <title>同步登陆</title>
 <script src="/js/jquery-1.8.1.min.js" type="text/javascript"></script>
    <script src="/api/getck"></script>
 <script language="javascript">
 function setck(bts_user) {
  $.post("/api/setsession",{bts_user:bts_user},function(re){ });}
  setck(ck);
    </script>
</head>
<body>
</body>
</html>

该方案尚存在的不足:
当用户直接访问B域时,需要加载一次该页面后,才能判断是否在A域登录,并写入当前域(B域)的SESSION

全局变量是面向对象程序员遇到的引发bug的主要原因之一。这是因为全局变量将类捆绑于特定的环境。破坏了封装。如果新的应用程序无法保证一开始就定义了相同的环境变量,那么一个依赖于全局变量的类就无法从一个应用程序中提取出来并应用到新的应用程序中。

什么是单例模式呢

单例模式顾名思义,就是只有一个实例。

作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,

这个类我们称之为单例类。

单例模式的要点有三个:

它们必须拥有一个构造函数,并且必须被标记为private
它们拥有一个保存类的实例的静态成员变量
它们拥有一个访问这个实例的公共的静态方法

和普通类不同的是,单例类不能在其他类中直接实例化。单例类只能被其自身实例化。要获得这样的一种结果, __construct()方法必须被标记为private。如果试图用private构造函数构造一个类,就会得到一个可访问性级别的错误。
要让单例类起作用,就必须使其为其他类提供一个实例,用它调用各种方法。单例类不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。结果是单例类不会重复占用内存和系统资源,从而让应用程序的其它部分更好地使用这些资源。作为这一模式的一部分,必须创建一个空的私有__clone()方法,以防止对象被复制或克隆。

返回实例引用的这个方法通常被命名为getInstance()。这个方法必须是静态的,而且如果它还没有实例化,就必须进行实例化。getInstance() 方法通过使用 instanceof 操作符和self 关键字,可以检测到类是否已经被实例化。

 代码如下 复制代码

header("Content-type:text/html;charset=utf-8");
//单例测试类
class Test {
    private $unique;
    static private $instance;//静态属性保存该类实例
     
    private function __construct(){//构造方法私有(防止外界调用)
        $this->unique=rand(0,20000);
    }
    static public function getInstance(){//静态方法提供对外接口(获取实例)
        if(!self::$instance instanceof self){
            self::$instance=new self();
        }
        return self::$instance;
    }
    private function __clone(){}//私有克隆方法,防止外界直接克隆该实例
    
}
$test=Test::getInstance();
$test2=Test::getInstance();
    
print_r($test);
print_r($test2);
    
if($test===$test2){
    echo '相等!';
}else{
    echo '不相等!';
}

好了,该说书代码了,我们在程序中查询数据的操作会非常非常的多,我们不可能每次都new一个对象,这样太耗费开销了。那么我们怎么办呢,单例模式是个不错的选择。 单例模式:只能实例化一次

下面看一下代码

db.class.php

 

 代码如下 复制代码

<?php
//数据库类、单例模式
class db{
public $conn;
private  static $sql;
private static $instact = null;

private function __construct(){
require_once('db.config.php');
$this->conn = mysql_connect($db['host'],$db['user'],$db['psd']);
if(!mysql_select_db($db['databases'],$this->conn)){
echo "数据库连接错误";
}
mysql_query('set names utf8',$this->conn);
}

public static function getInstance(){
if(is_null(self::$instact)){
self::$instact = new  db;
}
return self::$instact;
}
/**
*数据查询
*/
public function select($table,$condition=array(),$field=array()){
$where ="";
if(!empty($condition)){
foreach($condition as $k=>$v){
$where.= $k."='".$v."' and ";
}
$where = "where ".$where." 1=1";
}
if(!empty($field)){
foreach($field as $k=>$v){
$fieldstr.= $v.",";
}
$fieldstr = rtrim($fieldstr);
}else{
$fieldstr = "*";
}
self::$sql = "select {$fieldstr} from {$table} {$where}";
$result =  mysql_query(self::$sql);
$i = 0;
while($row = mysql_fetch_assoc($result)){
foreach($row as $k=>$v){
$resultrow[$i][$k] = $v;
}
$i++;
}
var_dump($resultrow);
}

/**
*数据添加
*/
public function insert($table,$data){
$values = "";
$datas = "";
foreach ($data as $k=>$v){
$values.=$k.",";
$datas.="'$v'".",";
}
$values = rtrim($values,',');
$datas = rtrim($datas,',');
self::$sql = "insert into {$table}({$values}) values ({$datas})";
if(mysql_query(self::$sql)){
return mysql_insert_id();
}else{
return false;
};
}

/**
*数据更新
*/
public function update($table,$data,$condition=array()){
$where = "";
if(!empty($condition)){
foreach ($condition as $k=>$v){
$where.= $k."=".$v." and ";
}
$where="where ".$where."1=1";
}
$updatastr = "";
if(!empty($data)){
foreach($data as $k=>$v){
$updatastr.= $k."='".$v."',";
}
$updatastr= "set ".rtrim($updatastr,",");
}
self::$sql = "update {$table} {$updatastr} {$where}";
return mysql_query(self::$sql);
}
/**
*数据 删除
*/
public function delete($table,$condition){
$where = "";
if(!empty($condition)){
foreach( $condition as $k=>$v){
$where.=$k."='".$v."' and ";
}
$where = "where ".$where.'1=1';
}
self::$sql = "delete from {$table}  {$where}";
return mysql_query(self::$sql);
}
//打印sql
public function getlastsql(){
echo self::$sql;
}
}
$ne = db::getInstance();
//$ne->update('message',array('user'=>'wanghao','title'=>'sd'),array('id'=>'5'));
//echo $db->insert('message',array('user'=>'张三','title'=>'demo'));
$ne->select('message',array('user'=>'songlin'));
$ne->getlastsql();
?>

数据库的配置文件

db.config.php


<?php
$host = "localhost";  //主机地址
$user = "root";         //用户名
$psd= "";                 //密码
$databases = "ceshi";

$db = array( "host" =>$host,
"user" =>$user,
"psd" =>$psd,
"databases"=>$databases
);
?>

在php中分割字符函数可以使用explode()函数,但是使用此函数必须要有一个规律了,如以|分开或以其它字符分开,这样我们就可以直接使用explode把字符串分成数组之后再利用for遍历输出,下面来看几个例子。

explode() 函数把字符串分割为数组。

语法

explode(separator,string,limit)

例子一

 代码如下 复制代码

<?php
$test='472347127,893372115,850965403';
$r=explode(",",$test);
for($i=0;$i<sizeof($r);$i++)
{ echo $i.".". $r[$i].""; }
?>

输出: 0.472347127 1.893372115 2.850965403

例子二

 代码如下 复制代码

<?php
$a="893372115,472347127,850965403" ;
$b=explode(",",$a);
foreach($b as $bb)
{ echo $bb.""; //print_r($b); }
?>

输出: 893372115 472347127 850965403 PHP


逗号 分割字符串

利用 explode 函数分割字符串到数组

 代码如下 复制代码

<?php

$source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串
$hello = explode(',',$source);

for($index=0;$index<count($hello);$index++){
echo $hello[$index];echo "</br>";
}

?>

split函数进行字符分割

 代码如下 复制代码

<?php

// 分隔符可以是斜线,点,或横线
$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year<br />n";
?>

在php中URL跳转不管那种做法都离不开header函数,下面我就给各位整理一些常用的URL跳转实现程序与方式,有需要的朋友可参考一下。

1.header()函数

header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(header)输出到浏览器。

header()函数的定义如下:

void header (string string [,bool replace [,int http_response_code]])
可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。

第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。注意:

1.location和“:”号间不能有空格,否则不会跳转。

2.在用header前不能有任何的输出。

3.header后的PHP代码还会被执行。例如,将浏览器重定向到linzl.com

 代码如下 复制代码

< ?php
//重定向浏览器
header("Location: http://www.111cn.net");
//确保重定向后,后续代码不会被执行
exit;
?> 


1、php跳转代码一句话式:

 代码如下 复制代码
<?php $url = $_GET['url']; Header("Location:$url"); ?>

注:假如保存为ad.php,即可实现ad.php?url=www.111cn.net跳转到集思网的效果
 
2、php跳转代码if判断式:

 代码如下 复制代码

if($_COOKIE["u_type"]){ header('location:register.php'); } else{ setcookie('u_type','1','86400*360');//设置cookie长期有效 header('location:zc.html'); }

注:保存为zc.php,当用户访问zc.php时,判断一个cookie是否存在,如果存在就跳转到register.php,如果不存在则创建cookie然后跳转到zc.html


URL重定向函数

 代码如下 复制代码

// URL重定向
function redirect($url, $time=0, $msg=”) {
//多行URL地址支持
$url = str_replace(array(“n”, “r”), ”, $url);
if ( empty($msg) )
$msg = “系统将在{$time}秒之后自动跳转到{$url}!”;
if (!headers_sent()) {
// redirect
if (0 === $time) {
header(‘Location: ‘ . $url);
} else {
header(“refresh:{$time};url={$url}”);
echo($msg);
}
exit();
} else {
$str = “<meta http-equiv=’Refresh’ content=’{$time};URL={$url}’>”;
if ($time != 0)
$str .= $msg;
exit($str);
}
}

上面的不能返回404状态,如果是页面跳转之后返回404状态代码我们可如下操作

 

 代码如下 复制代码

function getref()
{
 $url = @$_SERVER['HTTP_REFERER'];
 if( !empty( $url ) )
 {
  if( !strstr($url ,'111cn.net' ) && !strstr($url,'111cn.net'))
  {
   @header("http/1.1 404 not found");
   @header("status: 404 not found");
   include("404.html");//跳转到某一个页面,推荐使用这种方法
   exit();
  }
 }
 else
 {
  @header("http/1.1 404 not found");
  @header("status: 404 not found");
  include("404.html");//跳转到某一个页面,推荐使用这种方法
  exit();
 }
}

如果要做301也差不多

 代码如下 复制代码

<?php  
 $the_host = $_SERVER['HTTP_HOST'];
 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
 if($the_host !== 'www.111cn.net')
 {
     //echo $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://www.111cn.net' . $_SERVER['PHP_SELF']  . $request_uri);
 }
?>

现在天气预报网站都提供了解api来调用了,我们可以直接调用并显示在自己的网站上,下面我来给大家分享几段调用天气预报信息的php实例程序吧。

js调用天气预报方法

中国气象台

 代码如下 复制代码
<iframe src="http://m.weather.com.cn/m/pn12/weather.htm " width="245" height="110" 
 marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" 
 scrolling="no"></iframe>

上面是使用了框架方法,不好改自己的格式风格

最简单办法

 代码如下 复制代码

<?php
header("content-type:text/html;charset=utf-8");
$weather = file_get_contents("http://www.weather.com.cn/data/sk/101280601.html");
echo $weather;
?>

html代码

 代码如下 复制代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gbk" />
<style type="text/css">
.all span {font:bold 30px/50px "宋体";color:red;}
</style>
<title>天气预报</title>
</head>
<body>
<div class="all">
这里是:<span class="place">城市</span>,
气温是<span class="temp">气温</span>,
风向:<span class="wind">风向</span>,
风力:<span class="windPower">风力</span>
</div>
<script type="text/javascript" src="http://127.0.0.1/jquery.js"></script>
<script type="text/javascript">
$(function () {
$.ajax({
//请求的地址
url : "http://127.0.0.1/weather.php",
//请求成功后执行的函数
success : function (data) {
//用eval()解析返回来的数据,将字符串转成JSON格式
var oD = eval((+data+));
//用jquery-1.8.2获取元素
var $place = $(".place"),
$temp = $(".temp"),
$wind = $(".wind"),
$windPower = $(".windPower");
//将返回来的数据放到相应的位置
$place.html(oD["weatherinfo"]["city"]);
$temp.html(oD["weatherinfo"]["temp"] + "°");
$wind.html(oD["weatherinfo"]["WD"]);
$windPower.html(oD["weatherinfo"]["WS"]);
}
});
})
</script>
</body>
</html>

上面是指定城市了,我们可以在自己网站选择城市,例子

 代码如下 复制代码
<?php
/**
* php 天气预报代码
* by www.111cn.net
*/
    if(!isset($_GET['q'])){
        //根据IP查询所在地
        $p = file_get_contents("http://www.jbxue.com/ip/?q={$_SERVER['HTTP_X_FORWARDED_FOR']}");
    }
    else{
        $p = $_GET['q'];
    }
    $k = 0;
    $encoding = mb_detect_encoding()($p);
    if($encoding != "UTF-8"){
        $p = mb_convert_encoding($p,"utf-8","gbk");
    }
    $p_arr = array(
       "01" => "北京",
      "02" => "上海",
      "03" => "天津",
      "04" => "重庆",
      "05" => "黑龙江",
      "06" => "吉林",
      "07" => "辽宁",
      "08" => "内蒙古",
      "09" => "河北",
      "10" => "山西",
      "11" => "陕西",
      "12" => "山东",
      "13" => "新疆",
      "14" => "西藏",
      "15" => "青海",
      "16" => "甘肃",
      "17" => "宁夏",
      "18" => "河南",
      "19" => "江苏",
      "20" => "湖北",
      "21" => "浙江",
      "22" => "安徽",
      "23" => "福建",
      "24" => "江西",
      "25" => "湖南",
      "26" => "贵州",
      "27" => "四川",
      "28" => "广东",
      "29" => "云南",
      "30" => "广西",
      "31" => "海南",
      "32" => "香港",
      "33" => "澳门",
      "34" => "台湾"
    );
 
    function find(&$item,$key,$data){
        global $k;
        if(preg_match("/$item/u",$data)){
           $k = $key;
        }
    }
 
    function get_data_arr($key){
        if(!file_exists("./data/city{$key}.xml")){
            $c =file_get_contents( "http://m.weather.com.cn/data5/city{$key}.xml" );
            file_put_contents("./data/city{$key}.xml",$c);
        }
        else{
            $c = file_get_contents("./data/city{$key}.xml");
        }
       $arr = explode(",",$c);
       foreach($arr as $v){
           $data = explode("|",$v);
           $ret[$data[0]] = $data[1];
       }
       return $ret;
    }
 
    array_walk($p_arr,'find',$p);
    array_walk(get_data_arr($k),'find',$p);
    array_walk(get_data_arr($k),'find',$p);
    $ccode = get_data_arr($k);
    echo file_get_contents("http://m.weather.com.cn/data/{$ccode[$k]}.html");
?>

还有很多像可以调用更详细的天气信息的我们这里就不介绍了,大家可到天气网站去看他们提供的api接口 。

 

[!--infotagslink--]

相关文章

  • js实现跨域的4种实用方法原理分析

    什么是js跨域呐?js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。要...2015-10-30
  • js实现跨域的4种实用方法原理分析

    什么是js跨域呐?js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。要...2015-10-30
  • 详解nginx同一端口监听多个域名和同时监听http与https

    这篇文章主要介绍了详解nginx同一端口监听多个域名和同时监听http与https的相关资料,需要的朋友可以参考下...2017-07-06
  • jQuery Jsonp跨域模拟搜索引擎

    这篇文章主要介绍了jQuery Jsonp跨域模拟搜索引擎的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-06-24
  • 原生JS封装Ajax插件(同域、jsonp跨域)

    这篇文章主要为大家详细介绍了原生JS封装Ajax插件,为大家介绍不同域之间互相请求资源的跨域...2016-05-05
  • PHP JS Ip地址及域名格式检测代码

    PHP IP地址格式检测函数复制代码 代码如下:function checkIp($ip){ $ip = str_replace(" ", "", $ip); $ip = strtolower($ip); $ip= str_replace("http://", "", $ip); $ip= str_replace("https://", ""...2013-10-04
  • JS跨域解决方案之使用CORS实现跨域

    正常使用AJAX会需要正常考虑跨域问题,所以伟大的程序员们又折腾出了一系列跨域问题的解决方案,如JSONP、flash、ifame、xhr2等等。本文给大家介绍JS跨域解决方案之使用CORS实现跨域,感兴趣的朋友参考下吧...2016-04-17
  • 详解Vue-cli 创建的项目如何跨域请求

    本篇文章主要介绍了详解Vue-cli 创建的项目如何跨域请求 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...2017-05-22
  • Vue3配置axios跨域实现过程解析

    这篇文章主要介绍了Vue3配置axios跨域实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-25
  • C#域名解析简单实现方法

    这篇文章主要介绍了C#域名解析简单实现方法,可实现针对域名解析显示出主机名、IP地址、别名等功能,需要的朋友可以参考下...2020-06-25
  • AngularJs解决跨域问题案例详解(简单方法)

    本文通过一个案例给大家介绍angularJs解决跨域问题,非常具有参考借鉴价值,感兴趣的朋友一起学习吧...2016-05-20
  • 2015新版godaddy域名续费与过期域名赎回期限及赎回方法

    有许多的新手朋友不知道gd如何续费及过期了域名如何购买回来了,今天我们就一起来看看2015新版godaddy域名续费与过期域名赎回期限及赎回方法吧。 2015新版godaddy...2016-10-10
  • Vue项目配置跨域访问和代理proxy设置方式

    这篇文章主要介绍了Vue项目配置跨域访问和代理proxy设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-08
  • Godaddy注册域名怎么转出到万网

    今天给域名续费的,实在找不到可以便宜的优惠码了,就干脆直接转到万网好了!!39¥比之前使用了优惠码的50多还便宜不少! 申请转出之前请大家务必注意两点问题: 1、之前购买...2016-10-10
  • godaddy域名转出西部数码图文详解

    godaddy域名转出西部数码要如何转呢,因为许多新顶级域名在国内许多服务商不支持,特别是高价域名更不支持了,下面我们来看godaddy域名转出西部数码的方法吧. 1、域...2016-10-10
  • Nginx批量添加二级子域名完美方案

    这篇文章主要介绍了Nginx批量添加二级子域名完美方案,本文讲解使用正则表达式批量匹配指定域名的二级域名虚拟主机,需要的朋友可以参考下...2016-01-27
  • docker内网搭建dns使用域名访问替代ip:port的操作

    这篇文章主要介绍了docker内网搭建dns使用域名访问替代ip:port的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-22
  • asp.net(C#)跨域及跨域写Cookie问题

    在网站www.A.com下通过iframe或ajax调用www.B.com下的内容时,默认情况下IE会阻止www.B.com写任何Cookie...2021-09-22
  • nginx配置域名访问时域名后出现两个斜杠//的解决方法

    最近这两天重新写了一下我的个人网站,在阿里云新买了一台服务器,配置好以后出现了一个问题,就是输入域名后域名地址会自动在后面追加两个斜杆,需要的朋友可以参考下...2020-07-10
  • C#通过域名获得IP地址的方法

    这篇文章主要介绍了C#通过域名获得IP地址的方法,涉及C#中GetHostByName方法的使用技巧,需要的朋友可以参考下...2020-06-25