`
sangeshitou
  • 浏览: 27583 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

url data 模式(url scheme data)

阅读更多

首先来看一段代码

 <IMG
   SRC="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw
   AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz
   ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp
   a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl
   ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis
   F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH
   hhx4dbgYKAAA7"
   ALT="Larry">

 有兴趣的朋友可以写个HTML,然后把这段代码拷进去。

用浏览器打开这个html,你会发现有一个人头,然而用HTTP WATCH看一下,你会发现并没有任何HTTP请求。

 

这是为什么?

 

仔细看下这个img标签中src属性的内容,会发现这个url的模式是data。这样我们就发现了一个不常用的模式,那么这个模式到底有什么用呢?(原文请看

他的作用是将一些小的内容用文本的格式放到页面上,从而减少http请求。至于这个小的定义是什么?

先看原文如下:

 写道
The "data:" URL scheme is only useful for short values. Note that
some applications that use URLs may impose a length limit; for
example, URLs embedded within <A> anchors in HTML have a length limit
determined by the SGML declaration for HTML [RFC1866].

 从这段定义可以看出这个文本的内容不能超过url的最大长度限制。

 

 

这个data模式的定义如下:

       dataurl    := "data:" [ mediatype ] [ ";base64" ] "," data
       mediatype  := [ type "/" subtype ] *( ";" parameter )
       data       := *urlchar
       parameter  := attribute "=" value

 

另附 base64的解释

 

但是我做了一个实验:

<script type="text/javscript" src="data:application/x-javascript;base64,YWxlcnQoJ2hlbGxvJyk7" ></script>

 其中 YWxlcnQoJ2hlbGxvJyk7 是 alert('hello'); 的base64 编码。

 

但是浏览器能成功解析他的内容,但是不执行这段代码。

 

分享到:
评论

相关推荐

    URl Scheme的使用以及回调

    文件`TestA_URLScheme`可能是TestA应用的源代码示例,包含URL Scheme的配置和处理逻辑;而`TestB`可能是另一个应用的源代码或测试资源,用于触发对TestA的调用。通过分析这些代码,我们可以更深入地理解URL Scheme的...

    URL_Scheme页面跳转协议使用Demo

    在Android开发中,URL Scheme是一种实现应用程序间交互的技术,它允许一个应用启动另一个应用或触发特定功能。这个“URL_Scheme页面跳转协议使用Demo”是基于Kotlin编写的,展示了如何实现自定义URL Scheme来实现在...

    通过超链接url打开一些常见app(scheme)

    在Android开发中,"通过超链接URL打开一些常见APP(scheme)"是一个常见的功能,它涉及到应用程序间的交互和深度链接技术。此功能允许用户点击一个链接,比如在浏览器或者社交媒体应用中,然后直接跳转到特定的应用...

    scheme实现唤醒外部app

    在Android的`AndroidManifest.xml`中,通过`&lt;data&gt;`标签在`&lt;intent-filter&gt;`内声明scheme和host。 2. **处理scheme**:一旦scheme被注册,系统就会知道哪个应用可以响应特定的scheme。当用户点击一个带有该scheme的...

    android:scheme 通过uri跳转到APP应用指定Activity

    在Android开发中,`android:scheme` 是一个关键的概念,用于构建自定义URL协议,使得外部应用或系统可以通过特定的URI来启动我们的应用程序中的特定Activity。这个特性在很多场景下非常有用,比如分享链接、广告点击...

    浏览器中的data类型的Url格式 data:image/png,data:image/jpeg!

    数据类型URL(Data URL Scheme)是一种在Web开发中用于嵌入小型数据块到HTML文档或CSS样式表中的方法。这种格式最初在1998年的RFC2397中被定义,目的是为了允许开发者直接在页面内包含小量的数据,而无需从外部文件...

    python 获取url中的参数列表实例

    Python的urlparse有对...result = urlparse.urlparse(urldata) print result print urlparse.parse_qs(result.query) 输出: ParseResult(scheme='http', netloc='en.wikipedia.org', path='/w/api.php', params='',

    Scheme跳转的demo

    当一个应用希望监听并响应特定scheme的意图(Intent)时,需要在manifest中声明一个,并设置类别(action)为"android.intent.action.VIEW",数据类型(data)为自定义的scheme。例如: ```xml &lt;data ...

    Android应用跳转Scheme协议

    在Android开发中,Scheme协议是一种实现应用程序...通过自定义Scheme,开发者可以创建独特的URL格式,方便地在应用之间传递信息,提升用户体验。同时,理解和掌握相关安全措施也是确保应用稳定性和用户隐私的重要环节。

    Data URI scheme详解和使用实例及图片base64编码实现方法

    一、 Data URI scheme 简介 Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并...

    通过url跳回app,含测试html

    &lt;data android:scheme="your-app-scheme" android:host="your-host" /&gt; ``` 这里的"your-app-scheme"是你的App自定义的URL协议,例如"myapp","your-host"则是可选的主机名,用于进一步细化URL。例如,如果你的URL...

    iphone url获取

    6. **URL Scheme**:每个应用都有自己的URL Scheme,如`myapp://`,用于识别和打开该应用。在`Info.plist`文件中定义你的URL Scheme,然后在代码中监听并处理这些URL。 7. **URLQueryItem**:用于处理URL中的查询...

    android:scheme

    在Android开发中,`android:scheme` 是一个关键的概念,用于定义自定义URL协议,使得外部应用程序或系统可以通过特定的URI来启动我们的应用程序中的特定Activity。这个特性在很多场景下非常有用,比如实现点击链接...

    探究dataURI中使用SVG正确姿势

    dataURI是一种URL scheme,它允许在单一的URL内直接包含文件内容。其基本格式如下: ``` data:[][;base64],&lt;data&gt; ``` mediatype是数据类型,如image/svg+xml;base64是一个可选的编码方式,用于对数据进行编码。...

    Android-通过Url来进行activity的跳转此方案应用很广。也可用于Hybrid混合编程中

    1. **定义URL Scheme**:为你的应用创建一个自定义的URL scheme,如`myapp://`。这将是你所有URL的前缀。 2. **注册BroadcastReceiver**:在AndroidManifest.xml中,为你的Activity声明一个隐式Intent过滤器,以监听...

    AndroidSchemeDemo

    当一个带有自定义scheme的URL被触发时,`onNewIntent()`会被调用,可以使用`Intent.getData()`获取Uri对象,解析其中的参数。例如: ```java @Override protected void onNewIntent(Intent intent) { super....

    Android-可路由的AndroidApp内的原生URL路由器

    这里要设置类别(ACTION_VIEW),数据类型(DATA_SCHEMA)以及自定义的URL scheme。 3. **处理Intent**:当用户点击或程序内部触发一个匹配的URL时,系统会创建一个Intent,并传送到相应的组件。在组件的onCreate()...

    Intent总结04 Data和Type属性

    Intent Filter中的`&lt;data&gt;`标签就用来定义数据模式,包括URI的scheme、authority、path、mimeType等。 8. **安全性和权限**:正确设置Intent的数据和类型属性也能帮助确保数据的安全性。例如,只允许特定的组件访问...

Global site tag (gtag.js) - Google Analytics