当前位置:  互联网>综合
本页文章导读:
    ▪WebLogic中修改端口号和省略端口号的做法      一、修改端口号 方法一:通过console进入,servers—>点击需要修改端口号的Server—>修改Listen Port项。 方法二:修改bea\user_projects\domains\base_domain\config\config.xml。 初始 <server> <name>A.........
    ▪Python笔记——网络服务器之HTTPS服务      现在记录HTTPS服务端的编写。 import ssl, socket, time if __name__ == "__main__":     context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)     #context.load_cert_chain(certfile=‘key_pub.pem’, keyfile=‘ke.........
    ▪漫谈Cookie与Session 及其区别和联系      之前在网上看到了有人关于Session详解,感觉不错,的确很多人对Cookie与Session一直处于混淆状态,因此,我在这里借用了一部分前辈的总结,经过自己的理解进行修改和完善,并补充了二者之.........

[1]WebLogic中修改端口号和省略端口号的做法
    来源: 互联网  发布时间: 2013-10-19

一、修改端口号

方法一:通过console进入,servers—>点击需要修改端口号的Server—>修改Listen Port项。

方法二:修改bea\user_projects\domains\base_domain\config\config.xml。

初始
<server>
<name>AdminServer</name>
<listen-address></listen-address>
</server>


修改
<server>
<name>AdminServer</name>
<ssl>
<enabled>false</enabled>
</ssl>
<listen-port>80</listen-port>
<listen-address></listen-address>
</server>

ssl是和HTTPS,即HTTP的安全版有关,也可以使用方法一配置。推荐方法一。


二、省略端口号

HTTP协议的默认端口是80,采用上述方法将WebLogic的端口号修改为80即可。


参考地址:http://blog.csdn.net/davidhsing/article/details/7977787


作者:woshixuye 发表于2013-4-2 10:43:44 原文链接
阅读:59 评论:0 查看评论

    
[2]Python笔记——网络服务器之HTTPS服务
    来源: 互联网  发布时间: 2013-10-19

现在记录HTTPS服务端的编写。

import ssl, socket, time

if __name__ == "__main__":

    context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
    #context.load_cert_chain(certfile=‘key_pub.pem’, keyfile=‘key_priv.pem')   #可以分开定义公钥和私钥文件,也可以合并成一个文件
    context.load_cert_chain(certfile=’cert.pem')
   
    bindsocket = socket.socket()
    bindsocket.bind(('127.0.0.1', 443))
    bindsocket.listen(5)
   
    newsocket, fromaddr = bindsocket.accept()
    connstream = context.wrap_socket(newsocket, server_side=True)
   
    try:
        data = connstream.recv(1024)
        print(data)
        buf = 'Hi NN%f\n\n\n\n'%time.time()
        buf = buf.encode()
        connstream.send(buf)
    finally:
        connstream.shutdown(socket.SHUT_RDWR)
        connstream.close()
        bindsocket.close()

此例没有使用socketserver框架,目的在于测试ssl模块的用法。



继续,用框架实现HTTPS服务

import socketserver, ssl, time
class MyHTTPSHandler_socket(socketserver.BaseRequestHandler):
    def handle(self):
        context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
        context.load_cert_chain(certfile="cert.pem")
        SSLSocket = context.wrap_socket(self.request, server_side=True)
        self.data = SSLSocket.recv(1024)
        print(self.data)
        buf = 'test HTTPS Server Handler<br>%f'%time.time()
        buf = buf.encode()
        SSLSocket.send(buf)

if __name__ == "__main__":
    port = 443
    httpd = socketserver.TCPServer(('localhost‘, port), MyHTTPSHandler_socket)
    print(’https serving at port', port)
    httpd.serve_forever()

说明:handle()函数负责所有与客户端的通信。客户端连接过来之后,ssl模块载入证书,并用SSLSocket对socket进行封装,屏蔽底层的加密通信细节。


下面再给出HTTPS文件服务器代码,文件访问功能由SimpleHTTPRequestHandler实现,数据加密传输由ssl实现。

import socketserver, ssl, time, http.server
class MyHTTPS_SimpleHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def setup(self):
        print('setup')
        context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
        context.load_cert_chain(certfile=‘cert.pem’)
        SSLSocket = context.wrap_socket(self.request, server_side=True)
        self.rfile = SSLSocket.makefile('rb', self.rbufsize)
        self.wfile = SSLSocket.makefile('wb', self.wbufsize)
       
if __name__ == "__main__":
    port = 443
    httpd = socketserver.TCPServer(("localhost", port), MyHTTPS_SimpleHTTPRequestHandler)
    print('https serving at port', port)
    httpd.serve_forever()

最后,要指出的是setup()和handle()都是在客户端开始连接之后才被调用,从顺序上来说setup()先于handle()。



作者:haungrui 发表于2013-4-2 21:40:00 原文链接
阅读:0 评论:0 查看评论

    
[3]漫谈Cookie与Session 及其区别和联系
    来源: 互联网  发布时间: 2013-10-19

之前在网上看到了有人关于Session详解,感觉不错,的确很多人对Cookie与Session一直处于混淆状态,因此,我在这里借用了一部分前辈的总结,经过自己的理解进行修改和完善,并补充了二者之间的区别和联系,如有不妥当之处还请各位批评指正。

一、Session概念

Session,中文翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个会话。在这里Session是指一个浏览器从打开访问一个WEB站点到关闭对这一WEB站点的访问的全过程。

二、HTTP协议与状态保持

HTTP 协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的。

Cookie的作用就是为了解决HTTP协议无状态的缺陷所作出的努力。至于后来出现的Session机制则是又一种在客户端与服务器之间保持状态的解决方案。

让我们用几个例子来描述一下Cookie和Session机制之间的区别与联系。

比如一家咖啡店有优惠活动:喝5杯咖啡免费赠一杯咖啡,然而顾客一般不可能一次性消费5杯咖啡,这时就需要某种方式来纪录某位顾客的消费数量。因此有下面的几种方案:1、该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。

2、发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客

户端保持状态,即Cookie机制。

3、发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就

是在服务器端保持状态,即Session机制。

由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说Cookie机制采用的是在客户端保持状态的方案,而Session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以Session机制可能需要借助于Cookie机制来达到保存标识的目的,但实际上它还有其他选择。

三、理解Cookie机制 

Cookie机制的基本原理就如上面的例子一样,但是还有几个问题需要解决:“会员卡”如何分发;“会员卡”的内容;以及客户如何使用“会员卡”。

Cookie分发机制:

正统的Cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的Cookie。并存储在Internet临时文件里,然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成Cookie。而Cookie 的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的Cookie,如果某个Cookie所声明的作用范围(是由Cookie中的路径与域合组成)大于等于将要请求的资源所在的位置(例如资源所在的位置为www.google.com/foo而Cookie中的范围可能是www.google.com/即大于或者www.google.com/foo即等于),则把该Cookie附在请求资源的HTTP请求头上发送给服务器。意思是麦当劳的会员卡只能在麦当劳的店里出示,如果某家分店还发行了自己的会员卡,那么进这家店的时候除了要出示麦当劳的会员卡,还要出示这家店的会员卡。

Cookie内容:

Cookie的内容主要包括:名字,值,过期时间,路径和域。

1.域:可以指定某一个域比如.google.com,也可以指定一个域下的具体某台机器比如www.google.com或者froogle.google.com。

2.路径:就是跟在域名后面的URL路径,比如/或者/foo等等。

路径与域合在一起就构成了Cookie的作用范围。

如果不设置过期时间,则表示这个Cookie的生命期为浏览器会话期间,因为它只是保存在客户端内存中,只要关闭浏览器窗口,Cookie就消失了。这种生命期为浏览器会话期的Cookie被称为会话Cookie。会话Cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。如果设置了过期时间,浏览器就会把Cookie保存到硬盘上,关闭后再次打开浏览器,这些Cookie仍然有效直到超过设定的过期时间。存储在硬盘上的Cookie 可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的Cookie,不同的浏览器有不同的处理方式。对于IE,在一个打开的窗口上按 Ctrl+N(或者从文件菜单)或者其他IE内核的浏览器(如360或搜狗)打开的窗口可以与原窗口共享,而使用其他方式新开的IE进程则不能共享已经打开的窗口的内存Cookie;对于 Mozilla Firefox8.0,所有的进程和标签页都可以共享同样的Cookie。

一般来说是用JavaScript的window.open打开的窗口会与原窗口共享内存Cookie。浏览器对于会话Cookie的这种只认Cookie不认人的处理方式,经常给采用Session机制的web应用程序开发者造成很大的困扰。

下面就是一个Goolge设置Cookie的响应头的例子

HTTP/1.1 302 Found

Location: http://www.google.com/intl/zh-CN/

Set-Cookie: PREF=ID=0565f77e132de138:NW=1:TM=1098082649:LM=1098082649:S=KaeaCFPo49RiA_d8; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com

Content-Type: text/html

当浏览器再次访问Goolge的资源时自动向外发送Cookie

四、理解Session机制

Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。

当程序需要为某个客户端的请求创建一个Session的时候,服务器首先检查这个客户端的请求里是否已包含

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
移动开发 iis7站长之家
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3