webapi 浏览器获取不到参数_webapi 获取不到请求参数from query - CSDN
精华内容
参与话题
  • WebApi 接口参数不再困惑:传参详解

    千次阅读 2017-05-17 13:31:19
    参考:http://www.cnblogs.com/landeanfen/p/5337072.html 里面还有跨域的问题。

    参考:http://www.cnblogs.com/landeanfen/p/5337072.html
    里面还有跨域的问题。

    展开全文
  • 浏览器插件开发-常用API

    千次阅读 2020-06-30 14:15:32
    360浏览器的插件文档 中文, 虽然内核差不多但是一定与 Chrome api 一致, 可以作为参考 Chrome 官方案例库 案例 如何实现网页和Chrome插件之间的通信 消息传递 常用 API 1. chrome.runtime 管理 background 返回...

    浏览器插件开发-常用API

    调研资料

    常用 API

    1. chrome.runtime

    管理 background 返回关于清单的详细信息,并侦听和响应应用程序或扩展生命周期中的事件。您还可以使用这个API将url的相对路径转换为完全限定的url。

    1. chrome.runtime.getBackgroundPage(background: Window => {...}) 返回当前扩展的 background 对象
    2. chrome.runtime.ma 返回清单文件
    3. chrome.runtime.getURL 返回扩展中文件相对于安装位置的路径
    4. chrome.runtime.setUninstallURL 设置卸载时要访问的 URL
    5. chrome.runtime.reload 重新加载扩展

    2. chrome.cookies

    使用前需要先注册权限

    {
        "permission": [
            "cookies",
            "https://*.xxx.com"
        ]
    }
    

    常规方法 get | remove | set | getAll 等除外,以下是可能会用到的 api

    1. chrome.cookies.onChanged.addListener(({removed, cookie}) => {...}) removed=true 表示的是cookie被删除的情况,否则表示被添加或者设置,cookie 表示操作的cookie

    3. chrome.tabs

    浏览器标签操作,需要开通标签操作的权限

    {
        "permission": [
            "tabs",
            "https://*.xxx.com"
        ]
    }
    
    1. chrome.tabs.create(params, callback) 创建一个新的标签,以下是 params 参数
      • windowId 创建新标签的目标窗口,默认当前窗口
      • index 标签在窗口中的位置
      • url 标签导航的初始页面
      • selected 是否为选中的 默认是true
      • pinned 标签是否为固定
      • callback(tab) tab 是创建后的标签的细节,包括id
    2. chrome.tabs.executeScript(tabId, details, callback) 向标签页注入脚本
      • tabId 标签页ID,默认为当前选中窗口
      • details.code 直接注入的脚本代码
      • details.file 也可以指定注入的脚本文件,与 details.code 二选一
    3. chrome.tabs.get(tabId, callback) 获取指定标签页的细节
    4. chrome.tabs.getSelected(windowId, callback) 获取特定窗口(windowId 默认为当前窗口) 的选中的标签
    5. chrome.tabs.insertCSS(tabId, details, callback) 向页面注入样式
    6. chrome.tabs.remove(tabId, callback) 移除标签
    7. 其他信息参照文档

    4. chrome.extension

    主要被用于通信支持,提供 扩展与 content_script 之间, 扩展与扩展之间,与大多数 chrome.* API 不同,chrome.extension 部分功能可以直接在 content_script 中使用

    注意 chrome.extensionchrome.runtime 由很多重叠的 api , chrome.extension 比较老旧,尽量使用 chrome.runtime

    1. chrome.extension.connect(extensionId, connectInfo) 尝试连接到扩展内的其他监听者,主要用于 content_script => 扩展进程 的连接,由扩展进程 => content_script 的主动连接则可通过 chrome.tabs.connect() 连接
      • extensionId 想要连接的扩展的扩展ID, 默认为注入这个 content_script 的扩展
    2. chrome.extension.onConnect.addListener(listener) 监听到发来的连接时触发的监听函数
    3. chrome.extension.sendMessage(extensionId, message, responseCallback) 向扩展内的其他监听者发送消息
      • extensionId 扩展Id, 默认为函数调用者所在的扩展
      • message
      • responseCallback(response) 返回的响应数据
    4. chrome.extension.onMessage.addListener(details => {...}) 接收到本扩展中消息后的监听函数
      • details.message 信息
      • details.sender 信息发送者
      • details.sendRender() 发送响应消息,只能调用一次
    5. chrome.extension.getURL(path) 将扩展内的文件路径转换为 普通页面可用的文件路径
    6. chrome.extension.getBackgroundPage() 返回扩展中当前运行的 background 页面
    7. chrome.extension.getViews(fetchProperties) 返回指定类型的页面,包括标签页、后台页、弹窗页等
      • fetchProperties.type 可以是 [“tabs”, “popup”, “infobar”, “notification”] 省略这项会返回所有吧类型的页面 包括 background

    注意,只有以下 extension API 可以在 content_script 中使用

    1. chrome.extension.connect
    2. chrome.extension.onConnect
    3. chrome.extension.sendMessage
    4. chrome.extension.onMessage
    5. chrome.extension.getURL

    5. chrome.webNavigation

    处理正在进行中的导航请求,需要开通权限

    {
        "permission": [
            "webNavigation",
        ]
    }
    

    一个普通的导航从开始到导航结束所经历的生命周期如下

    onBeforeNavigate => onCommitted => onDOMContentLoaded => onCompleted
    
    1. transitionType 各个监听事件中都会返回的一个类型值,表示当前导航的触发原因
      • 可以包含的值:["link", "typed", "auto_bookmark", "reload", ...] 多数情况下用来指引,新打开的标签页是怎么触发的
    2. chrome.webNavigation.onBeforeNavigate.addListener(details => {...}) 导航即将发生时触发
      • details.tabId 导航即将打开的 tab 的 id
      • details.url 即将打开的 url
      • details…
    3. chrome.webNavigation.onCommitted.addListener(details => {...}) 导航提交时触发,在这个时候,document 仍然在下载,它所引用的资源也可能在下载,但是浏览器已经接受少部分文档,并决定切换到新的文档
      • details.tabId 导航即将打开的 tab 的 id
      • details.url 即将打开的 url
      • details.transitionType 导航的原因
    4. chrome.webNavigation.onDOMContentLoaded.addListener(details => {...}) 在页面 DOM 构造完成时触发,但是DOM所引用的资源不一定加载完成
      • details.tabId 导航即将打开的 tab 的 id
      • details.url 即将打开的 url
    5. chrome.webNavigation.onCompleted.addListener(details => {...}) DOM 及其引用的资源全部加载完成时触发
      • details.tabId 发生导航的 tab 的 id
      • details.url 发生导航的 url

    6. chrome.storage

    用户数据的存储、检索、跟踪,与localStorage 相比做了很多的优化,使用时需要获取权限

    {
        "permissions": [
          "storage"
        ]
    }
    

    关键点

    1. content_script 中可以直接访问
    2. 可以是异步的,可以批量读写
    3. 可以存储对象,而不像 localStorage 只能存字符串
    4. 可以同步到 Chrome 账户,需要使用 storage.sync

    storage.sync 与 storage.local 都用来存储数据 只不过 storage.sync 可以同步到 Chrome 账户,以下以 storage.local 为例

    1. chrome.storage.onChanged.addListener((changes, namespace) => {...}) 监听存储事件
      • changes[key].newValue 更新后的值
      • changes[key].oldValue 更新前的值
    2. chrome.storage.local.get(key|keyArray, callback) 读取存储 key 可以是字符春或者数组,数组代表获取多个 key 对应的存储,key=null 获取所有存储 callback 中可以得到获取的值,必填
    3. chrome.storage.local.set(Object, callback) 设置或者耿勋存储,会触发 onChanged 事件
    4. chrome.storage.local.remove('name', callback) 移除某一个存储
    5. chrome.storage.local.clear(callback) 清除所有存储
    展开全文
  • 除了Chrome浏览器支持的chrome.* API之外,Chrome浏览器扩展还可以使用Chrome浏览器Web页面或Chrome app提供的APIs。对于Chrome浏览器2支持的API,还可以绑定第三方APIChrome浏览器扩展程序。 Chrome浏览器...

    除了Chrome浏览器支持的chrome.* API之外,Chrome浏览器扩展还可以使用Chrome浏览器为Web页面或Chrome app提供的APIs。对于Chrome浏览器2支持的API,还可以绑定第三方API库到Chrome浏览器扩展程序。

    Chrome浏览器扩展程序可以使用的API包括:

    • 标准JavaScript API,即Web应用中常用的JavaScript核心API和DOM API
    • XMLHttpRequest API
    • HTML5 API
    • WebKit API,特别是WebKit的CSS特性,如过滤器、动画和变换
    • Chrome V8 API,如JSON
    • 其他第三方类库API,如jQuery,可以绑定这些API到Chrome浏览器扩展程序,就如同在Web页面中使用这些API

    本系列将首先介绍一些常用的Chrome浏览器API。

    1. Chrome sessions API

    Chrome浏览器扩展程序通过chrome.sessions API,可以从浏览器的会话中存取windows窗口和tab页。

    chrome.sessions.Session对象的属性如下:

    属性名

    类型

    必选/可选

    注释

    lastModified

    整型

    必选

    窗口或tab页被关闭或修改的时间,ms

    tab

    chrome.tabs.Tab

    与window两者必选其一

    tab页

    window

    chrome.windows.Window

    与tab两者必选其一

    窗口

     

    chrome.sessions API中的常用方法:

    • 获得最近被关闭的windows窗口或tab页的列表

    chrome.sessions.getRecentlyClosed(Filter filter, function(array of Session))

    • 获得同步会话中的所有设备

    chrome.sessions.getDevices(Filter filter, function(array of Session))

    • 恢复打开指定会话中的窗口或tab页

    chrome.sessions.restore(string sessionId, function(Session session))

     

    2. Chrome windows API

    Chrome浏览器扩展程序通过chrome.windows API,可以与浏览器的窗口系统交互,如创建浏览器窗口、修改浏览器窗口和重新编排浏览器窗口。

    chrome.windows API本身无需声明任何授权。但是一个chrome.windows.Window对象包含一个chrome.tabs.Tab类型的数组,如果要操作数组中的tabs的url、title、favIconUrl属性,则需要在manifest.json文件中声明tabs授权如下:

    复制代码
    1 {
    2         ...
    3         "permissions": [
    4           "tabs"
    5         ],
    6         ...
    7 }
    复制代码

     

    当前窗口是包含正在运行的JavaScript代码的窗口。这与当前拥有焦点的窗口可能不是同一个窗口。

    chrome.windows.Window对象的属性如下:

    属性名

    类型

    必选/可选

    注释

    id

    整型

    可选

    窗口的ID,在浏览器会话范围内唯一。有些情况下的窗口没有ID

    focused

    布尔型

    可选

    窗口是否拥有焦点

    top

    整型

    可选

    窗口离屏幕顶部边缘偏移的像素值。有些情况下的窗口没有top

    left

    整型

    可选

    窗口离屏幕左部边缘偏移的像素值。有些情况下的窗口没有left

    width

    整型

    可选

    窗口的宽度像素值,包括边框。有些情况下的窗口没有width

    height

    整型

    可选

    窗口的高度像素值,包括边框。有些情况下的窗口没有height

    tabs

    chrome.tabs.Tab的数组

    可选

    窗口中拥有的tabs

    incognito

    布尔型

    可选

    窗口是否运行在隐身模式下

    type

    WindowType

    可选

    浏览器窗口的类型。

    枚举值"normal""popup""panel""app""devtools"

    state

    WindowState

    可选

    浏览器窗口的状态。枚举值"normal""minimized""maximized""fullscreen""docked"

    alwaysOnTop

    布尔型

    必选

    窗口是否总是位于顶层(模式窗口)

    sessionId

    字符串

    可选

    从Chrome.sessions API获取的会话ID,用以唯一标识一个窗口

     

    chrome.tabs API中的常用方法:

    • 创建一个新的浏览器窗口

    chrome.windows.create(object createData, function(Window window){…})

    createData对象是可选的,表示采用默认值创建窗口。createData对象的属性同chrome.windows.Window对象。

    • 关闭一个指定的浏览器窗口

    chrome.windows.remove(integer windowId, function(){…})

    • 修改一个指定的浏览器窗口的参数

    chrome.windows.update(integer windowId, object updateInfo, function(Window window){…})

    updateInfo对象是必选的,其中未涉及的Window属性则保持不变。

    • 获取指定ID的窗口对象

    chrome.windows.get(integer windowId, object getInfo, function(Window window){…})

    getInfo对象是可选的,其有两个参数。一个是名为populate的布尔型参数,true表示该方法得到的chrome.windows.Window对象里包含chrome.tabs.Tab类型的数组。另一个名为windowTypes的WindowType型参数,表示通过windowTypes进行筛选窗口。

    • 获取所有的窗口对象

    chrome.windows.getAll(object getInfo, function(array of Window){…})

    getInfo对象是可选的,其有两个参数。一个是名为populate的布尔型参数,true表示该方法得到的chrome.windows.Window对象里包含chrome.tabs.Tab类型的数组。另一个名为windowTypes的WindowType型参数,表示通过windowTypes进行筛选窗口。

     

     3. Chrome tabs API

    Chrome浏览器扩展程序通过chrome.tabs API,可以与浏览器的tab系统交互,如创建浏览器tab、修改浏览器tab和重新编排浏览器tabs。

    大多数chrome.tabs API无需声明任何授权,但是如果要操作tab的url、title、favIconUrl属性,则需要在manifest.json文件中声明tabs授权如下:

    复制代码
    1 {
    2         ...
    3         "permissions": [
    4           "tabs"
    5         ],
    6         ...
    7 }
    复制代码

     

    chrome.tabs.Tab对象的属性如下:

    属性名

    类型

    必须/可选

    注释

    id

    整型

    可选

    tab的ID,在浏览器会话中唯一。有些情况下的tab没有ID

    index

    整型

    可选

    从0开始的tab在窗口中的位置序号

    windowId

    整型

    可选

    tab所依托的窗口

    openerTabId

    整型

    可选

    tab的id,该tab打开当前tab。两个tabs都应该位于同一个窗口中

    selected

    布尔型

    可选

    已过期。tab是否被选中

    highlighted

    布尔型

    可选

    tab是否高亮显示

    active

    布尔型

    可选

    tab是否成为窗口中的激活tab,无论窗口是否拥有焦点

    pinned

    布尔型

    可选

    tab是否订住

    audible

    布尔型

    可选

    tab是否在刚刚过去的几秒钟里发出过声音(当未必被听见,因为可能被静音)

    mutedInfo

    MutedInfo类型

    可选

    tab的静音状态

    url

    字符串

    可选

    tab显示的url,需要拥有tabs权限

    title

    字符串

    可选

    tab显示的title,需要拥有tabs权限

    favIconUrl

    字符串

    可选

    tab的favicon的url,需要拥有tabs权限。tab加载过程中为空

    status

    字符串

    可选

    tab的状态,枚举值"loading", "complete"

    incognito

    布尔型

    可选

    tab所在窗口是否为隐身窗口

    width

    整型

    可选

    tab的宽度像素值

    height

    整型

    可选

    tab的高度像素值

    sessionId

    字符串

    可选

    从Chrome.sessions API获取的会话ID,用以唯一标识一个tab

     

    chrome.tabs API中的常用方法:

    • 创建一个新tab

    chrome.tabs.create(object createProperties, function(Tab tab){…})

    createProperties对象的属性如下:

    属性名

    类型

    必须/可选

    注释

    windowId

    整型

    可选

    创建tab所依托的窗口,默认为当前窗口

    index

    整型

    可选

    被创建的tab在窗口中的位置序号,0~tab数量

    url

    字符串

    可选

    被创建的tab的初始url。完整的URL类似于http://www.yourdomain.com,相对的URL可以是相对于扩展中的当前页面。

    active

    布尔型

    可选

    被创建的tab是否成为激活tab,无论窗口是否拥有焦点。默认为true

    selected

    布尔型

    可选

    已过期。被创建的tab是否成为被选中tab,默认true

    pinned

    布尔型

    可选

    被创建的tab是否订住,默认false

    openerTabId

    整型

    可选

    tab的id,该tab打开新创建的tab。两个tabs都应该位于同一个窗口中

    • 复制一个新tab

    chrome.tabs.duplicate(integer tabId, function(Tab tab){…})

    • 关闭tabs

    chrome.tabs.remove(integer or array of integer tabIds, function(){…})

    • 修改tab的属性

    chrome.tabs.update(integer tabId, object updateProperties, function(Tab tab){…})

    updateProperties对象是必选的,其中未涉及的tab属性则保持不变。

    • 获取指定id的tab

    chrome.tabs.get(integer tabId, function(Tab tab){…})

    • 根据指定的若干属性查找tabs

    chrome.tabs.query(object queryInfo, function(array of Tab){…})

    queryInfo对象的属性如下:

    属性名

    类型

    必须/可选

    注释

    active

    布尔型

    可选

    tab是否成为窗口中的激活tab

    pinned

    布尔型

    可选

    tab是否订住

    audible

    布尔型

    可选

    tab是否在刚刚过去的几秒钟里发出过声音(当未必被听见,因为可能被静音)

    muted

    布尔型

    可选

    tab是否处于静音状态

    highlighted

    布尔型

    可选

    tab是否高亮显示

    currentWindow

    布尔型

    可选

    tab是否位于当前窗口

    lastFocusedWindow

    布尔型

    可选

    tab是否位于最近拥有焦点的窗口中

    status

    TabStatus类型

    可选

    tab的状态,枚举值"loading""complete"

    title

    字符串

    可选

    tab显示的title,需要拥有tabs权限

    url

    字符串

    可选

    tab显示的url,需要拥有tabs权限

    windowId

    整型

    可选

    tab所依托的窗口

    windowType

    WindowType类型

    可选

    tab所在窗口的类型

    枚举值"normal""popup""panel""app""devtools"

    index

    整型

    可选

    从0开始的tab在窗口中的位置序号

     

    • 注入JavaScript代码到页面中

    chrome.tabs.executeScript(integer tabId, object details, function(array of any){…})

    details对象的属性如下:

    属性名

    类型

    必须/可选

    注释

    code

    字符串

    与file两者必选其一

    要注入的JavaScript代码或CSS代码

    file

    字符串

    与code两者必选其一

    要注入的JavaScript代码或CSS文件路径

    allFrames

    布尔型

    可选

    true表示CSS将注入到当前页面的所有frames。默认false,表示CSS只注入到顶层frame

    matchAboutBlank

    布尔型

    可选

    true表示CSS将注入about:blank和about:srcdoc,当不好注入到about:-frames。默认false

    runAt

    枚举型

    "document_start","document_end", "document_idle"

    可选

    CSS最早注入的时机

    • 注入CSS文件到页面中

    chrome.tabs.insertCSS(integer tabId, object details, function(){…})

    details对象的属性同executeScript()。

    展开全文
  • Web服务器工作原理详解(基础篇)

    万次阅读 多人点赞 2018-09-18 16:39:04
    概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的...

    概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端。

    Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器(这一点可以自行百度百科), Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
    Web服务器 约等于 HTTP服务器 + 其他服务

    目前所熟知的Web服务器有很多,其最主流的是 Apache, Nginx, IIS
    各大Web服务器的实现细节都不同,是为了某种情形而设计开发的。但是它们的基础工作原理是相同的,这也是本次基础篇所讲解的内容。

    一、Web服务器工作原理图解

    这里写图片描述
    首先我们暂时不考虑HTTP协议的各种请求方式,我们先跟着**(Web服务器工作原理总体描述01)这张图,将一次Web服务的工作流程过一遍,我们假设以浏览器作为客户端
    (1) 用户做出了一个操作,可以是填写网址敲回车,可以是点击链接,可以是点击按键等,接着浏览器获取了该事件。
    (2) 浏览器与对端服务程序建立TCP连接。
    (3) 浏览器将用户的事件
    按照HTTP协议格式**打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP协议格式的字节流。
    (4) 浏览器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到对端服务程序。
    (5) 服务端程序拿到该数据包后,同样以HTTP协议格式解包,然后解析客户端的意图。
    (6) 得知客户端意图后,进行分类处理,或是提供某种文件、或是处理数据。
    (7) 将结果装入缓冲区,或是HTML文件、或是一张图片等。
    (8) 按照HTTP协议格式将(7)中的数据打包
    (9) 服务器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到客户端。
    (10) 浏览器拿到包后,以HTTP协议格式解包,然后解析数据,假设是HTML文件。
    (11) 浏览器将HTML文件展示在页面
    以上为Web服务器工作基本原理。其实不难发现,这仅仅只是一个简单的网络通信。我们应该深信,作为一个服务器,其根本的工作无非有三个

    1. 接收数据 2. 发送数据 3. 数据处理
      而Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据
      高级的服务器无非就是将这三个部分更加细致的设计了。

    二、Web服务器之提供静态文件工作原理图解

    Web服务器最主要的功能是提供静态的文件。日常的上网浏览大多是网页浏览,少数时候才会有一些数据的提交操作。因此,我们结合上一张图示来重点讲解在GET请求下的Web服务器工作原理。
    这里写图片描述
    其他流程基本不变,着重在于红色与蓝色部分。
    (1) 当用户点击一个网页链接或浏览器加载一些资源(css,jpg …)时产生。
    (6) 服务程序解包后,确定其为GET请求,并且是对该服务器上的某一资源的请求。首先服务程序会去确认该路径是否存在,再确定该路径的文件是否可以获取。
    (7-1) 如果请求的路径有误,或者该资源不能被用户获取,则返回错误提示页面。很多服务器的错误页面只有404,更专业的应该是将错误分类并返回对应的错误代码页面。
    (7-2) 如果该路径合法且文件可以被获取,那么服务程序将根据该文件类型进行不同的装载过程,记录其类型作为(8)中HTTP协议中对应的返回类型,并加入响应头。

    假设以点击一个页面链接为例,浏览器首先将HTML文件请求过来,再以同样的流程对HTML文件中包含的资源文件路径进行依次请求。
    这里写图片描述

    三、Web服务器之数据提交工作原理图解

    仅仅只是网页的浏览并不能满足所有人的需求,客户端与服务器应当是有数据交互的。
    即使单方面的资源请求任然是网络的主力军。
    我们应该清楚的知道,数据提交对于用户来说有什么作用。
    (1) 资源上传 (2) 登陆验证 (3) API接口调用 (4) 远程指令等
    数据提交使得用户的操作性有了质的飞跃,它使得HTTP短连接获取静态文件的方式提升到了动态交互的层次上。该性质也催化出各式各样的编程语言、框架。例如PHP,JavaWeb。
    如果你留意目前主流的那些大型服务器,你会发现再高级再牛逼的东西实际是也是最基础的东西建造的。那么我们还可以顺便学习一下最古老的动态技术CGI
    这里写图片描述
    其他流程基本不变,着重在于红色与蓝色部分。
    (1) 用户提交数据,假设用户点击一个按键提交填好的信息。在(3)中将以POST格式写入,并填入提交至服务端的可执行程序的路径。
    (6) 服务端将参数与该CGI绑定,复制进程,用管道传递参数和接收结果
    (7) 子进程执行CGI,接收(6)父进程传来的参数,运算完成返回结果。
    最后父进程将结果装入静态模板文件,放入缓冲区

    四、动态技术

    我们得明白,Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。那么所谓动态实际是指两种情况

    1. 服务端产生
      (1) 用户POST提交数据到某个程序,程序根据该数据作为参数运行,得出结果并装入静态的模板页面中,返回该静态页面。但对于用户来说,同一个页面,做了一个操作后数据不一样了。好了,这就是动态页面。(CGI原理)
      (2) PHP的原理是,用户GET请求一个php后缀的文件,服务器先执行该php后缀文件中的PHP代码,将结果填入代码的位置,再返回。当然也可以提交数据参与运算再返回。
    2. 客户端产生
      (1) 用户GET请求一个JavaScript文件,服务端不做任何运算返回该静态文件。浏览器收到该JS文件,在本地执行并更新页面。
      (2) 用户POST提交数据到服务端,服务端根据该提交的数据指令返回静态文件,浏览器收到后执行并更新。
    展开全文
  • Web Api简单使用方法

    千次阅读 2018-04-07 14:54:41
    1. 简单介绍什么是Web ApiREST属于一种设计风格,REST 中的 POST(新增数据),GET(取得数据),PUT(更新数据),DELETE(删除数据)来进行数据库的增删改查,而如果开发人员的应用程式符合REST原则,则它的服务为...
  • WebApi的安全性解决方案

    千次阅读 2018-11-12 16:20:42
      WebApi的小白想要了解一些关于WebApi安全性相关的问题,本篇文章是整理一些关于WebApi安全、权限认证的文章。 二、内容正文  2.1 进行验证  客户端调用:http://api.xxx.com/getInfo?Id=value 如上,这种...
  • 使用Web Speech API实现语音文本互转

    万次阅读 热门讨论 2017-09-25 12:55:11
    本教程中,我们将尝试使用Web Speech API,这是一个非常强大的浏览器接口,可以用来记录语音并将其转换为文本,同样的,也可以用来朗读字符串。 接下来进入正题,这个App应当具有以下几个功能: 通过语音录入或者...
  • FineBI如何在web页面中嵌入式集成

    千次阅读 2017-06-09 10:32:11
     API嵌入集成1.1 描述FineBI是基于B/S架构的浏览器/服务器模式,现在用户开发的系统基本上趋向于B/S架构的浏览器/服务器模式,因此有些页面完全可以直接采用web页面嵌入式集成的简易方式完成集成。而且些因为框架...
  • 初尝Web API

    万次阅读 2012-11-10 22:05:50
    HTTP 并是只能用在网页中。它其实还是一个强大的平台,可以用来生成一些API,暴露服务和数据。...ASP.NET Web API 是.NET Framework上的一个框架,用来生成 web API。 本文将使用ASP.NET Web API
  • 百度地图URL调用

    千次阅读 2016-02-17 22:12:26
    调用百度提供的web端接口只需要拼接url,然后访问该url便能进入相应的百度地图界面。 web端url API网址:http://lbsyun.baidu.com/index.php?title=uri/api/web ,里边提供了各种情形下的访问方式。 百度提供了...
  • 最近写h5用到了定位功能,网上搜索如果使用其他API的话还需要下载sdk,所以就使用的浏览器的,比较简陋。不过定位也还ok,微信自带浏览器偏差了大概500米, UC的大概也就是几米吧,比较精确了。 js代码: // 判断...
  • selenium webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持进行web-app测试。从这篇博客开始,将学习使用如何使用python调用webdriver框架对浏览器进行一系列的操作打开浏览器在selenium+python...
  • cookie、sessionStorage和localStorage的区别

    万次阅读 多人点赞 2019-05-30 21:29:47
    一、 概念的理解 webstorage本地存储 1)webstorage是本地存储,存储在客户端,包括localStorage和sessionStorage ...存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,参与和服务器的通信 3)ses...
  • 基于微信公众号api网页开发整理

    千次阅读 2019-03-06 18:34:16
    重点说明(实际开发遇见的坑)1.微信网页开发有2个access_token,一...(1)获取基本access_token https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secre
  • HTTP协议和Servlet编程

    万次阅读 2019-06-06 14:27:06
    HTTP协议 ... Windows 10 MyEclipse 10 ... 对浏览器客户端和服务器端之间数据传输的格式规范 (2) request的内容 request请求(浏览器->服务器) GET /day09/hello HTTP/1.1 # 请求行(请求方式:U...
  • H5获取用户当前位置,粗略分为3种方法: 1、H5自带的方法,获取经纬度 2、通过地图提供的JS。获取位置 3、通过微信的API(这个需要公众号 / 小程序) 1、通过H5自带的获取经纬度的方法 优点: 需要引用的资源较少,...
  • IndexedDB: 浏览器里内置的数据库简介

    千次阅读 2015-10-14 23:11:05
    对于大多数的Web应用程序来说,数据是在服务器端进行组织和整理,然后由客户端(浏览器端)通过网络请求获取。随着浏览器的处理能力不断增强,可以在浏览器端存储和操纵应用程序需要的数据,因此越来越多的网站开始...
  • Web API数据传输加密

    万次阅读 2015-08-18 12:03:12
    1、Web API的接口访问分类 Web API接口的访问方式,大概可以分为几类: 1)一个是使用用户令牌,通过Web API接口进行数据访问。这种方式,可以有效识别用户的身份,为用户接口返回用户相关的数据,如包括用户...
  • 浏览器指纹实现

    万次阅读 2019-03-10 18:09:41
    也就是说,理论上你访问了某一个网站,那么这个网站就能识别你,虽然知道你是谁,但你有一个唯一的指纹,将来无论是广告投放、精准推送,还是其他一些关于隐私的事情,都非常方便。另外,...
  • 计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器Web服务器之间需要建立持久的连接,这意味...
1 2 3 4 5 ... 20
收藏数 98,891
精华内容 39,556
关键字:

webapi 浏览器获取不到参数