精华内容
下载资源
问答
  • 但在windows下用浏览器登录 服务器收到了链接 但windows的浏览器却打不开网页 windows防火墙已经关了 服务器显示 在windows链接来后 大部分时候会触发 EPOLLRDHUP|EPOLLHUP|EPOLLERR这类信号 而linux中没有出现...
  • 服务器上绑定域名后,本机测试返回400,查找很久但是都没有相应的问题和解答过程,望有经验大牛解答。
  • 目前测试过后 Chrome 360都可以打开网页 但发现Chrome是很快就能打开 360打开时感觉像卡住一样 不显示页面 这时如果我用360再开一个网页连接 之前的网页就显示页面了 不清楚原因 !... 以上是发送过去的数据
  • 一般来讲,这一种通过浏览器来访问资源的技术。我们经常说的上网,应该大部都是指的是上万维网(web),但是我们经常将万维网和因特网(Internet)搞混。因特网是一种网络互连的技术,它更指的是物理层面上的互连,而...

    1,world wide web

    我们通常所说的web就是指world wide web。一般来讲,这一种通过浏览器来访问资源的技术。我们经常说的上网,应该大部都是指的是上万维网(web),但是我们经常将万维网和因特网(Internet)搞混。因特网是一种网络互连的技术,它更指的是物理层面上的互连,而万维网应该算是跑在因特网上的一种服务。
    我们通常通过浏览器还访问web,我们常见到的网页中包含超文本,图片,视频音频等各项内容。向我们提供这些资源的是一个一个的站点,通过互联网,这些站点相互连接起来。我们通过超链接从一个网页访问到另外一个网页,从一个站点到另外一个站点,所有的这一切组成一个庞大的网,这就是web。
    支持web的技术,首先是底层的网络,因为web就是建立在Internet之上,web的基本协议是HTTP协议,它跑在TCP上的协议之上,而TCP协议又需要IP协议的支持,IP协议又要由底层链路来支撑,所以我们可以从高到第看到这样一个协议栈 http->tcp->ip->连路层协议。
    我们可以想一想web上的资源有哪些? 首先是文本,后来添加了图片,到现在的各种音频视频资源,所有互联网上的资源都要通过一个叫做URI的东西还标记,当然了我们更常见是URL。现在也不必纠结于两者有何不同,URL就是URI的一个子集,URL给了我们资源的地址,所以我们能够找到它。
    现在看一个URL: 这是一个图片的url。它是按照这样的语法来定义:scheme://domain:port/path?query_string#fragment_id.scheme就是协议,在浏览器里通常是http,例子中的是https是一种由HTTP和SSL/TLS组合起来的应用,用以提供加密通信和对网络服务器的身份验证(http://zh.wikipedia.org/zh/HTTPS )。然后就是域名,每个站点都至少有一个域名,上面例子上的域名部分是www.google.com.hk,这个域名也是分为三部分的,www是主机名,com.hk算是顶级域名,除了com还有cn,net等。域名后面是端口号默认为80,通常被省略,这是服务器端服务器软件侦听的端口,也是TCP里面一个端口号的值。然后就是path,资源在服务器上的路径。最后问号部分的客户端利用url传给服务器的一些参数值,通常值比较少,不太重要时这么做。

    2,协议
    (1)HTTP协议
    web里最重要的协议就是HTTP协议,对于经典的ISO七层网络模型来说, HTTP处于最高层–应用层。HTTP应用的模型是client/server模型。因此对应着两种HTTP消息类型,request和response。客户端向服务器发出请求,服务器向客户端发回请求。下面看一下两种类型消息的格式:


    下面分别进行解释。
    首先是HTTP Request Message
    请求行:请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。请求方法常见的有:GET POST HEAD PUT等。
    消息报头:在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。 POST请求的内容放在实体正文中。
    HTTP Response Message
    状态行:最主要的一个字段是服务器响应代码。比如,200 OK ,400 Bad Request ,401 Unauthorized ,403 Forbidden ,404 Not Found ,500 Internal Server Error ,503 Server Unavailable
    消息报头:普通报头和实体报头与 请求报头的类似。有区别的在于响应包头,响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

    get报文:

    post报文:

    HTTP响应报文:

    (2)TCP协议
    HTTP协议基于TCP协议,也就是HTTP的所有内容将作为TCP的实体被封装到TCP报文里面。TCP协议是面向连接,可靠的传输机制。也就是说客户端在与服务器交互数据的过程中会有一个连接建立和释放的过程,看上面的Http头部字段可以看到相关的字段。TCP有强大的窗口机制能够适应发送方和接收方的发送接收能力,也能根据整个网络状况进行调整。

    (3)IP协议
    IP协议处于整个TCP/IP协议族的承上启下地位。我们知道因特网上主机是靠一个32位的ip地址来定位的,HTTP用的URL也算是地址,但是比较高级,IP协议是理解不了的,所以需要一个从URL到IP的转换,这个过程通过DNS(域名查询系统)协议完成。我们用的每一台电脑上都配置了DNS服务器的地址,如果没有配置那么你的网关默认充当了,当我们有一个URL想知道对应的IP时就需要向DNS服务器发送查询请求了,它会把查询的结果发回。

    2,浏览器
    在web的世界里最不能少的角色就是浏览器。前面我们说到HTTP协议,HTTP消息有两种,request和response。浏览器的主要工作就是发送http request报文和接收处理http response报文。

    3, 服务器
    服务器有两个层级的概念,它可以是机器,它上面存着一个站点的所有东西,也可以是软件,安装在一个也叫做服务器的机器上,帮助这个机器分发用户想要的东西。
    服务器最基本的功能就是响应客户端的资源请求。服务器首先会侦听80端口,来了http请求,就根据请求进行处理,请求一个图片那就根据路径找到资源发回,请求静态html页面也是如此,如果请求的是像php这样的动态页面应该先调用php编译器(或是解释器吧)生成html代码,然后返回给客户端。当然还要解决的一个问题就是并行问题以应对大访问量。

    展开全文
  • 浏览器/服务器模型

    千次阅读 2016-11-21 21:48:49
    一、浏览器/服务器模型的概念 浏览器/服务器模型(B/S模型)是一种对C/S模型的变化和改进,在这种模型中,用户界面完全通过WWW浏览器实现,一部分事务逻辑在浏览器实现,大部分事务逻辑在服务器中实现,它是一种特殊...

    一、浏览器/服务器模型的概念

    浏览器/服务器模型(B/S模型)是一种对C/S模型的变化和改进,在这种模型中,用户界面完全通过WWW浏览器实现,一部分事务逻辑在浏览器实现,大部分事务逻辑在服务器中实现,它是一种特殊的客户/服务器模型,这种模型的客户是某种浏览器,采用HTTP协议通信。B/S模型通常由下面三层架构部署实施:

    ① 客户端表示层:由Web浏览器组成,它不存放任何应用程序。

    ② 应用服务器层:由一台或多台服务器组成,处理应用中的所有事务逻辑等,具有良好的扩展性,可以随应用的需要增加服务器。

    ③ 数据中心层:由数据库系统组成,用于存放业务数据。


    二、B/S模型工作的过程

               

    ① 用户通过浏览器向Web服务器提出HTTP请求

    ② Web服务器根据请求调用相应的HTML、XML文档或ASP、JSP文件。如果为HTML、XML文档,则直接返回给浏览器;若为ASP、JSP文件,Web服务器首先执行文档中的服务器脚本程序,然后把执行结果返回给浏览器。

    ③ 浏览器接收到Web服务器发回的页面内容,显示给用户。


    三、浏览器/服务器模型的优缺点

    B/S模型的优点:

    (1)具有分布性特点,可以随时进行查询,浏览等业务处理

    (2)业务扩展简方便,通过增加网页即可增加服务器的功能

    (3)维护简单方便,只需要改变网页,就可以实现所有用户的同步更新

    (4)开发简单,共享性强

    B/S模型的缺点:

    (1)操作是以鼠标为最基本的操作方式,无法满足快速操作的要求

    (2)页面动态刷新,相应速度明显降低

    (3)功能弱化,难以实现传统模式下的特殊功能要求




    展开全文
  • 因为网络间通信是基于TCP协议传输数据的,而服务器浏览器之间通信是基于HTTP协议的,那么下面基于python实现一个tcp服务器浏览器可以基于http协议进行发送请求和解析。展示浏览器返回一个固定页面和HTML页面案例...

        因为网络间通信是基于TCP协议传输数据的,而服务器与浏览器之间通信是基于HTTP协议的,那么下面基于python实现一个tcp服务器,浏览器可以基于http协议进行发送请求和解析。展示浏览器返回一个固定页面和HTML页面案例。

    1.服务器只能返回固定页面给请求者

    import socket
    
    
    def handle_client(client_socket):
        "为一个客户端进行服务"
        recv_data = client_socket.recv(1024).decode("utf-8")
        request_header_lines = recv_data.splitlines()
        for line in request_header_lines:
            print(line)
    
        # 组织相应 头信息(header)
        response_headers = "HTTP/1.1 200 OK\r\n"  # 200表示找到这个资源
        response_headers += "\r\n"  # 用一个空的行与body进行隔开
        # 组织 内容(body)
        response_body = "hello world"
    
        response = response_headers + response_body
        client_socket.send(response.encode("utf-8"))
        client_socket.close()
    
    
    def main():
        "作为程序的主控制入口"
    
        server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 设置当服务器先close 即服务器端4次挥手之后资源能够立即释放,这样就保证了,下次运行程序时 可以立即绑定7788端口
        server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        server_socket.bind(("", 7788))
        server_socket.listen(128)
        while True:
            client_socket, client_addr = server_socket.accept()
            handle_client(client_socket)
    
    
    if __name__ == "__main__":
        main()

    使用“网路调试助手"作为TCP 客户端发送请求给服务器,服务器将固定返回基于http协议格式的hello,world给所有的请求者。

            使用浏览器基于HTTP协议访问该服务器如下,服务器将固定返回基于http协议格式的hello,world给所有的请求者。这里因为浏览器可以解析http协议的格式文件,所以可以通过网页的形式展示出来hello,world。当然如果浏览器返回一个完整的网页,那么同样浏览器也可以解析整个网页,这就是我们日常使用的服务器与浏览器基于http协议的通信啦。

    2.服务器返回一个网页页面给请求者

    浏览器通过http协议请求该TCP服务器,该服务器返回一个网页页面给浏览器,浏览器解析以后显示到前端。

    import socket
    
    def service_client(new_socket):
        """为这个客户端返回数据"""
    
        # 1. 接收浏览器发送过来的请求 ,即http请求
        # GET / HTTP/1.1
        # .....
        request = new_socket.recv(1024)
        print(">>>" * 50)
        print(request)
    
        # 2. 返回http格式的数据,给浏览器
        # 2.1 准备发送给浏览器的数据---header
        response = "HTTP/1.1 200 OK\r\n"
        response += "\r\n"
        # 2.2 准备发送给浏览器的数据---boy
        # response += "hahahhah"
    
        f = open("./html/index.html", "rb")  #读取的这个文件是我们提前放在程序当前目录下的,用来测试的文件。
        html_content = f.read()
        f.close()
    
        # 将response header发送给浏览器
        new_socket.send(response.encode("utf-8"))
        # 将response body发送给浏览器
        new_socket.send(html_content)  #注意这里send的数据没有encode,文件open的方式就是rb,二进制格式
    
        # 关闭套接
        new_socket.close()
    
    
    def main():
        """用来完成整体的控制"""
        # 1. 创建套接字
        tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 设置当服务器先close 即服务器端4次挥手之后资源能够立即释放,这样就保证了,下次运行程序时 可以立即绑定7890端口
        tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    
        # 2. 绑定
        tcp_server_socket.bind(("", 7890))
    
        # 3. 变为监听套接字
        tcp_server_socket.listen(128)
    
        while True:
            # 4. 等待新客户端的链接
            new_socket, client_addr = tcp_server_socket.accept()
    
            # 5. 为这个客户端服务
            service_client(new_socket)
    
        # 关闭监听套接字
        tcp_server_socket.close()
    
    
    if __name__ == "__main__":
        main()
    

    使用浏览器访问服务器,因为这里我定义的是服务器固定返回一个网页(这个网页使我们提前放在服务器上的。),所以只要你访问的是这个服务器,这个端口 ,所有的返回都是一样。 所以,你访问的网址,可以任意定义,都不会影响这个访问结果,比如http://127.0.0.1:7890/dfsdf/aaaahttp://127.0.0.1:7890/aaa/index 等结果都是一样的。因为对于客户端的访问链接(文件内容)服务器端不去进行解析,而是无论你要啥我都给你这个结果。

      如下服务器端打印显示了浏览器的get请求,但是注意,实际我们访问一次,但是服务器显示浏览器发送了多次get请求,这是为什么呢?

    尖叫提示:当浏览器读取到index首页的HTML源码后,它会解析HTML,显示页面,然后,根据HTML里面的各种链接,再发送HTTP请求给服务器,拿到相应的图片、视频、Flash、JavaScript脚本、CSS等各种资源,最终显示出一个完整的页面。所以我们在下面能看到很多额外的HTTP请求。

    D:\software\python3\python.exe D:/pythoyworkspace/file_demo/Class_Demo/pachong/urllib_Request_Post.py
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    b'GET / HTTP/1.1\r\nHost: 127.0.0.1:7890\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    b'GET /classic.css HTTP/1.1\r\nHost: 127.0.0.1:7890\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36\r\nAccept: text/css,*/*;q=0.1\r\nReferer: http://127.0.0.1:7890/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    b'GET /images/qt-logo.png HTTP/1.1\r\nHost: 127.0.0.1:7890\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nReferer: http://127.0.0.1:7890/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    b'GET /images/trolltech-logo.png HTTP/1.1\r\nHost: 127.0.0.1:7890\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nReferer: http://127.0.0.1:7890/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    b'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1:7890\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nReferer: http://127.0.0.1:7890/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
    

    尖叫提示:尽管按理说客户端解析HTML后,根会据HTML里的链接再发送HTTP请求给服务器,拿到相应的图片、视频、Flash、JavaScript脚本、CSS等各种资源,最终显示出一个完整的页面。但是我们看到下面实际返回的网页的左上角和右上角有图标(图片)是缺失的,没有显示出来,这是为什么呢?

    这是因为尽管客户端给我们的服务器发送了这些资源请求,但是我们的服务器并没有解析这些请求,按请求的文件内容返回给客户端浏览器,所以要想让客户端实现拿到相应的图片、视频、Flash、JavaScript脚本、CSS等各种资源,最终显示出一个完整的页面,我们需要再定义服务器解析客户端请求内容的解析函数,具体参考后面系列2博客。

    展开全文
  • 服务器浏览器信息传送编码

    千次阅读 2015-04-20 10:55:59
    请求数据是由客户端浏览器发送服务器的,请求数据的编码是由浏览器决定的。例如在浏览器地址栏中给出:http://localhost:8080/hello/AServlet?name=传智,那么其中“传智”是什么编码的呢?不同浏览器使用不同的编码...

    1 请求编码
    1.1 直接在地址栏中给出中文
    请求数据是由客户端浏览器发送服务器的,请求数据的编码是由浏览器决定的。例如在浏览器地址栏中给出:http://localhost:8080/hello/AServlet?name=传智,那么其中“传智”是什么编码的呢?不同浏览器使用不同的编码,所以这是不确定的!

    • IE:使用GB2312;
    • FireFox:使用GB2312;
    • Chrome:使用UTF-8;

        通常没有哪个应用要求用户在浏览器地址栏中输入请求数据的,所以大家只需了解一下即可。

    1.2 在页面中发出请求
    通常向服务器发送请求数据都需要先请求一个页面,然后用户在页面中输入数据。页面中有超链接和表单,通过超链接和表单就可以向服务器发送数据了。
    因为页面是服务器发送到客户端浏览器的,所以这个页面本身的编码由服务器决定。而用户在页面中输入的数据也是由页面本身的编码决定的。
    index.html

    <!DOCTYPE html>
    <html>
      <head>
        <title>index.html</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      </head>
    
      <body>
    <form action="/hello/servlet/AServlet">
      名称:<input type="text" name="name"/>
      <input type="submit" value="提交"/>
    </form>
    <a href="/hello/servlet/AServlet?name=传智">链接</a>
      </body>
    </html>

    当用户在index.html页面中输入数据时,都是UTF-8列表的。因为这个页面本身就是UTF-8编码的!
    页面的编译就是页面中输入数据的编码。

    1.3 GET请求解读编码
    当客户端通过GET请求发送数据给服务器时,使用request.getParameter()获取的数据是被服务器误认为ISO-8859-1编码的,也就是说客户端发送过来的数据无论是UTF-8还是GBK,服务器都认为是ISO-8859-1,这就说明我们需要在使用request.getParameter()获取数据后,再转发成正确的编码。
    例如客户端以UTF-8发送的数据,使用如下转码方式:

    String name = request.getParameter(“name”);
    name = new String(name.getBytes(“iso-8859-1”), “utf-8”);

    1.4 POST请求解读编码
      当客户端通过POST请求发送数据给服务器时,可以在使用request.getParameter()获取请求参数之前先通过request.setCharacterEncoding()来指定编码,然后再使用reuqest.getParameter()方法来获取请求参数,那么就是用指定的编码来读取了。
    也就是说,如果是POST请求,服务器可以指定编码!但如果没有指定编码,那么默认还是使用ISO-8859-1来解读。
    request.setCharacterEncoding(“utf-8”);
    String name = request.getParameter(“name”);

    2. 响应编码
    响应:服务器发送给客户端数据!响应是由response对象来完成,如果响应的数据不是字符数据,那么就无需去考虑编码问题。当然,如果响应的数据是字符数据,那么就一定要考虑编码的问题了。
    response.getWriter().print(“传智”);
    上面代码因为没有设置repsonse.getWriter()字符流的编码,所以服务器使用默认的编码(ISO-8859-1)来处理,因为ISO-8859-1不支持中文,所以一定会出现编码的。
    所以在使用response.getWriter()发送数据之前,一定要设置response.getWriter()的编码,这需要使用response.setCharacterEncoding()方法:
    response.setCharacterEncoding(“utf-8”);
    response.getWriter().print(“传智”);
    上面代码因为在使用response.getWriter()输出之前已经设置了编码,所以输出的数据为utf-8编码。但是,因为没有告诉浏览器使用什么编码来读取响应数据,所以很可能浏览器会出现错误的解读,那么还是会出现乱码的。当然,通常浏览器都支持来设置当前页面的编码,如果用户在看到编码时,去设置浏览器的编码,如果设置的正确那么乱码就会消失。但是我们不能让用户总去自己设置编码,而且应该直接通知浏览器,服务器发送过来的数据是什么编码,这样浏览器就直接使用服务器告诉他的编码来解读!这需要使用content-type响应头。
    response.setContentType(“text/html;charset=utf-8”);
    response.getWriter().print(“传智”);
      上面代码使用setContentType()方法设置了响应头content-type编码为utf-8,这不只是在响应中添加了响应头,还等于调用了一次response.setCharacterEncoding(“utf-8”),也就是说,通过我们只需要调用一次response.setContentType(“text/html;charset=utf-8”)即可,而无需再去调用response.setCharacterEncoding(“utf-8”)了。

    在静态页面中,使用来设置content-type响应头,例如:

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    3 URL编码
    通过页面传输数据给服务器时,如果包含了一些特殊字符是无法发送的。这时就需要先把要发送的数据转换成URL编码格式,再发送给服务器。
    其实需要我们自己动手给数据转换成URL编码的只有GET超链接,因为表单发送数据会默认使用URL编码,也就是说,不用我们自己来编码。
    例如:“传智”这两个字通过URL编码后得到的是:“%E4%BC%A0%E6%99%BA”。URL编码是先需要把“传智”转换成字节,例如我们现在使用UTF-8把“传智”转换成字符,得到的结果是:“[-28, -68, -96, -26, -103, -70]”,然后再把所有负数加上256,得到[228, 188, 160, 230, 153, 186],再把每个int值转换成16进制,得到[E4, BC, A0, E6, 99, BA],最后再每个16进制的整数前面加上“%”。
    通过URL编码,把“传智”转换成了“%E4%BC%A0%E6%99%BA”,然后发送给服务器!服务器会自动识别出数据是使用URL编码过的,然后会自动把数据转换回来。

    当然,在页面中我们不需要自己去通过上面的过程把“传智”转换成“%E4%BC%A0%E6%99%BA”,而是使用Javascript来完成即可。当后面我们学习了JSP后,就不用再使用Javascript了。

     <script type="text/javascript">
        function _go() {
            location = "/day05_2/AServlet?name=" + encodeURIComponent("传智+播客");
        }
      </script>
    <a href="javascript:_go();">链接</a>

    因为URL默认只支持ISO-8859-1,这说明在URL中出现中文和一些特殊字符可能无法发送到服务器。所以我们需要对包含中文或特殊字符的URL进行URL编码。
    服务器会自动识别数据是否使用了URL编码,如果使用了服务器会自动把数据解码,无需我们自己动手解码。

    展开全文
  • 浏览器服务器的区别

    千次阅读 2020-05-13 15:53:01
    简单来说,浏览器是网站访问者使用的,服务器是网站管理者使用的 两者具体的区别: 一、指代不同 1、浏览器:用来显示在万维网或局域网等内的文字、图像及其他信息的软件。 2、Web服务器:也称为WWW(WORLD WIDE WEB)...
  • 浏览器已经得到证书base64编码,现在服务器要向浏览器注入证书,向浏览器的intenet选项中写入浏览器传递过来的证书,应该怎么做。 如果有比较详细的实例的话,麻烦传我一份。万分感谢!
  • 浏览器访问服务器的过程

    千次阅读 2019-04-18 11:00:20
    1.PC 在浏览器输入域名 2.域名通过DNS服务解析域名,然后DNS服务器返回http服务的IP地址 3.PC通过DNS服务器返回http服务的IP地址,和http服务器3次握手建立连接 4.http服务接受PC浏览器请求,返回http数据 5.PC...
  • 设置浏览器代理服务器

    千次阅读 2018-05-03 10:12:07
    如果设置整个系统所有http代理,那么直接在interent选项中设置,如果只是想设置某个服务器的代理,那么方式...在浏览器的快捷方式的目标栏添加 -proxy-server=127.0.0.1:808 2、firefox: 在设置中配置手动代理...
  • 浏览器 代理服务器拒绝连接 怎么办

    万次阅读 2020-06-18 18:01:30
    在使用电脑的时候有时候会发现浏览器无法正常访问网页,但QQ微信什么的都还能正常使用。浏览器的显示图如下: 接下来是解决步骤 1. 打开internet选项 在左下角输入internet选项,打开该面板 2. 切换标签页到“连接...
  • 如何在服务器端实现向浏览器传送图片,有具体代码最好。大神可以给出大致实现思路嘛~
  • 实际开发中,多线程多... 网络间通信是基于TCP协议传输数据的,而服务器浏览器之间通信是基于HTTP协议的,那么下面基于python实现一个协程方式tcp服务器浏览器可以基于http协议进行发送请求和解析。浏览器展示...
  • 服务器渲染和浏览器渲染的区别

    千次阅读 2018-10-31 23:14:04
    这个工作放在服务器进行就是服务器渲染,放在浏览器进行就是浏览器渲染。 服务器端渲染,指的是后台语言通过一些模板引擎生成 html。 浏览器端渲染,指的是用 js 去生成 html,前端做路由。 浏览器端渲染路线: ...
  • 这一篇开始通过浏览器服务器进行通信,主要用post请求。 post请求格式如下 POST /index.html HTTP/1.1 Accept: text/html, application/xhtml+xml, image/jxr, */* Referer: http://192.168.0.105/index.html...
  • 标签: 服务器浏览器sessionservlet文档web服务 2012-04-26 17:48 12966人阅读 评论(2) 收藏 举报  分类: C# ASP.NET(137)  目录(?)[+]  http协议学习系列 1. 基础概念篇
  • 浏览器服务器的交换过程

    千次阅读 2018-04-19 19:06:48
    去访问服务器上的1.jsp这个web资源的过程中,浏览器服务器都做了神马操作呢,我们是怎么在浏览器里面看到1.jsp这个web资源里面的内容的呢?浏览器服务器做了以下几个操作: 1、浏览器根据主机名"www.g...
  • tortoise svn 连接不上SVN服务器浏览器也打不开服务器,该怎么解决?怎么连接到SVN服务器
  • 浏览器请求web服务器的过程

    千次阅读 2019-03-22 20:41:13
    这里我在自己的电脑上安装了XAMPP...服务器在接收到请求之后,会解析URL处理浏览器的请求。 服务器处理了浏览器的请求之后,将会把处理的结果根据约定的方式,例如HTML、JSON、XML等,将处理结果返回给浏览器。 这里...
  • 浏览器服务器通信的过程

    千次阅读 2018-10-27 16:15:23
    首先需要知道: 用户在浏览器中输入网址时候,浏览器会通过访问的域名来定位得到IP(DNS) 会依此从浏览器缓存、系统缓存、路由器缓存、ISP DNS缓存中查找 ...但浏览器服务器不是直接连接上的,需要...
  • 浏览器代理服务器出现问题

    千次阅读 2016-11-03 09:59:00
    使员工charles时,会出现,可以启动charles,解决问题,或者关闭代理 一直使用正常,浏览器突然不能访问,显示如下 搜狗浏览器: 到搜狗浏览器,设置--高级 ...取消代理服务器勾选: 解决问题...
  • 之前用Session保存登录信息,logout清除Session信息,但是会出现关闭浏览器无法清除Session,所以使用服务器来检测浏览器是否关闭。 原理: 使用ajax+线程。 具体思路: 1.在页面使用js定时器(setInterval)来...
  • 浏览器 服务器之间的通信过程

    千次阅读 2015-10-09 15:19:06
    B/S(Browser/Server)结构就是浏览器/服务器结构,它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,...
  • 除谷歌浏览器之外的...1:打开浏览器→工具→Internet选项→连接 2:拨号和虚拟专用网络设置→删除宽带连接 3:局域网设置→取消选中:为LAN使用代理服务器 谷歌浏览器: 设置→高级→系统→打开代理设置,其它如上 ...
  • 使用浏览器访问服务器端页面

    千次阅读 2019-08-07 15:52:26
    import java.io.*; import java.net.ServerSocket.../*使用浏览器访问我们服务器上的页面 * * 步骤: * 1.创建一个ServerSocket * 2.获取浏览器请求信息 * 3.对浏览器请求信息第一行进行截取(第一行就是文件地址) ...
  • 问题描述:突然出现可以ping通外网但浏览器网页打不开,而且不是因为请求超时,而是一点开某网页立即显示代理服务器连不上,所有使用IE浏览器代理设置的浏览器全都上不了网,比如chrome,搜狗浏览器,qq浏览器,IE...
  • web前端——浏览器服务器介绍

    千次阅读 2018-02-25 15:48:54
    浏览器 : 解析网页、解析服务器返回给我们信息供我们查看使用的软件。市面上的浏览器有很多,常见的有:360浏览器、IE浏览器、谷歌浏览器、百度浏览器、QQ浏览器、火狐浏览器、世界之窗、2345浏览器、搜狗浏览器、...
  • safari浏览器 session tomcat服务器

    千次阅读 2015-11-19 19:32:06
    今天遇到一个问题,苹果的safari浏览器访问...简单和大家介绍一下背景,我们是页面书写人员在本地起了一个服务,页面通过js的ajax发送jsonp跨域的请求来访问测试服务器的接口, 在这种情况下,浏览器发送请求访问两个
  • safari浏览器找不到服务器

    千次阅读 2020-12-29 11:47:27
    最近mac pro上的浏览器总是出现safari浏览器找不到服务器的, 换成谷歌也不行 注: 我本地有链接VPN, 断开VPN后也无是访问不到 一、经历 1) 将当前系统升级到最新版本--未解决问题 2) 修改safari浏览器的搜索引擎-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 161,223
精华内容 64,489
关键字:

服务器浏览器