webapp可以看源码_浏览器app源码

hacker|
109

文章目录:

浏览器可以看到源码 那webapp不是很不安全 别人通过源码就可以看到你的密码

你只能看见静态的源码而已,PHP的话就完全看不到了。意思就是你只能看到静态的HTML结构。

为什么.net开发的webapp在android机上不能鎐ookie

Android中在使用OkHttp这个库的时候,有时候需要持久化Cookie,那么怎么实现呢。OkHttp的内部源码过于复杂,不进行深究,这里只看其中的HttpEngineer里面的部分源码,在发起请求以及请求结束都会调用这个类的几个方法。我们先看networkRequest方法,在里面通过client.getCookieHandler()函数获得了CookieHandler对象,通过该对象拿到cookie并设置到请求头里,请求结束后取得响应后通过networkResponse.headers()函数将请求头获得传入receiveHeaders函数,并将取得的cookie存入getCookieHandler得到的一个CookieHandler对象中去

?

1

2

3

4

5

6

7

8

9

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

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

This client doesn't specify a default {@code Accept} header because it

* doesn't know what content types the application is interested in.

*/

private Request networkRequest(Request request) throws IOException {

Request.Builder result = request.newBuilder();

//此处省略n行代码......

CookieHandler cookieHandler = client.getCookieHandler();

if (cookieHandler != null) {

// Capture the request headers added so far so that they can be offered to the CookieHandler.

// This is mostly to stay close to the RI; it is unlikely any of the headers above would

// affect cookie choice besides Host.

Mapstring, string="" headers = OkHeaders.toMultimap(result.build().headers(), null);

Mapstring, string="" cookies = cookieHandler.get(request.uri(), headers);

// Add any new cookies to the request.

OkHeaders.addCookies(result, cookies);

}

//此处省略n行代码......

return result.build();

} data-snippet-id=ext.4df17b386793c68468195a690c917859 data-snippet-saved=false data-csrftoken=bFkHGE1O-cy7WY9D6w70F6qK9YUKZHLynI5g data-codota-status=donecode class="c10f-28da-a339-3eeb hljs" java=""/**

* Populates request with defaults and cookies.

*

* /codepcode class="28da-a339-3eeb-6ad0 hljs" java=""This client doesn't specify a default {@code Accept} header because it

* doesn't know what content types the application is interested in.

*/

private Request networkRequest(Request request) throws IOException {

Request.Builder result = request.newBuilder();

//此处省略n行代码......

CookieHandler cookieHandler = client.getCookieHandler();

if (cookieHandler != null) {

// Capture the request headers added so far so that they can be offered to the CookieHandler.

// This is mostly to stay close to the RI; it is unlikely any of the headers above would

// affect cookie choice besides Host.

Mapstring, string="" headers = OkHeaders.toMultimap(result.build().headers(), null);

Mapstring, string="" cookies = cookieHandler.get(request.uri(), headers);

// Add any new cookies to the request.

OkHeaders.addCookies(result, cookies);

}

//此处省略n行代码......

return result.build();

}/string,/string,/code/p/string,/string,

?

1

2

3

4

5

6

7

code class="a339-3eeb-6ad0-8345 hljs" java=""public void readResponse() throws IOException {

//此处省略n行代码......

receiveHeaders(networkResponse.headers());

//此处省略n行代码......

}/code

?

1

2

3

4

5

6

code class="3eeb-6ad0-8345-8f63 hljs" java=""public void receiveHeaders(Headers headers) throws IOException {

CookieHandler cookieHandler = client.getCookieHandler();

if (cookieHandler != null) {

cookieHandler.put(userRequest.uri(), OkHeaders.toMultimap(headers, null));

}

}/code

而这个CookieHandler对象是OkHttpClient类中的一个属性,提供了getter和setter方法,默认的构造函数OkHttpClient client = new OkHttpClient();不会创建这个CookieHandler对象。假设我们传入了这个对象,那么OkHttp自然会进行cookie的自动管理了。

?

1

2

3

4

5

6

7

8

9

code class="411c-2386-b162-b41a hljs" cs=""private CookieHandler cookieHandler;

public OkHttpClient setCookieHandler(CookieHandler cookieHandler) {

this.cookieHandler = cookieHandler;

return this;

}

public CookieHandler getCookieHandler() {

return cookieHandler;

}/code

那么假设我们将CookieHandler对象传入

?

1

2

code axapta="" class="2386-b162-b41a-560e hljs"OkHttpClient client = new OkHttpClient();

client.setCookieHandler(CookieHandler cookieHanlder);/code

那么,现在关键是如何去实现这个CookieHandler 对象。CookieManager是CookieHandler 的一个子类,其构造函数 public CookieManager(CookieStore store, CookiePolicy cookiePolicy)需要传入两个参数,CookieStore 是一个接口,因此我们实现CookieStore接口中的抽象方法,即可实现这个CookieHandler 对象。参考android-async-http这个库,它具有cookie的自动管理功能,主要我们参考其中的两个类

PersistentCookieStore SerializableCookie

参考以上两个类并做适当修改,得到了如下两个类,他们的功能就是将cookie保持在SharedPreferences中。

?

1

2

3

4

5

6

7

8

9

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

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

code avrasm="" class="b162-b41a-560e-c782 hljs"package com.kltz88.okhttp.cookie;

/**

* User:lizhangqu(513163535@qq.com)

* Date:2015-07-13

* Time: 17:31

*/

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import java.net.HttpCookie;

public class SerializableHttpCookie implements Serializable {

private static final long serialVersionUID = 6374381323722046732L;

private transient final HttpCookie cookie;

private transient HttpCookie clientCookie;

public SerializableHttpCookie(HttpCookie cookie) {

this.cookie = cookie;

}

public HttpCookie getCookie() {

HttpCookie bestCookie = cookie;

if (clientCookie != null) {

bestCookie = clientCookie;

}

return bestCookie;

}

private void writeObject(ObjectOutputStream out) throws IOException {

out.writeObject(cookie.getName());

out.writeObject(cookie.getValue());

out.writeObject(cookie.getComment());

out.writeObject(cookie.getCommentURL());

out.writeObject(cookie.getDomain());

out.writeLong(cookie.getMaxAge());

out.writeObject(cookie.getPath());

out.writeObject(cookie.getPortlist());

out.writeInt(cookie.getVersion());

out.writeBoolean(cookie.getSecure());

out.writeBoolean(cookie.getDiscard());

}

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {

String name = (String) in.readObject();

String value = (String) in.readObject();

clientCookie = new HttpCookie(name, value);

clientCookie.setComment((String) in.readObject());

clientCookie.setCommentURL((String) in.readObject());

clientCookie.setDomain((String) in.readObject());

clientCookie.setMaxAge(in.readLong());

clientCookie.setPath((String) in.readObject());

clientCookie.setPortlist((String) in.readObject());

clientCookie.setVersion(in.readInt());

clientCookie.setSecure(in.readBoolean());

clientCookie.setDiscard(in.readBoolean());

}

}/code

?

ios webapp开发要懂js吗

前端开发最重要的基础就三门技术 jvascript+css+html,js是其中最重要的

ps可以不掌握,工作的时候一般只需要会切图就行,而且很多公司会让作图的人切好图,你可以不考虑

flash完全不用理会,pc上flash日渐消沉,无线上早就死光光了

我想说的 最重要的,就是基础,深入掌握一下javascript和css基础,这两个是无论是面试相关,跟以后的项目开发,都是最息息相关的。如果时间不够的话,重点掌握javascript,推荐两本书,你选其中一本就行,一是犀牛书(javascript权威指南),另外一本是javascript高级程序设计(尼古拉斯大神的书,目前第三版),重点掌握js语法基础,ajax,面向对象相关(基于原型的继承等高级技术)。

css推荐 css权威指南一书,css学习是很枯燥的,一般在项目过程中才能不断掌握,如果没有条件,可以重点学一下选择器,定位,盒模型和浮动这几章。

jquery在很多公司或者整个前端界用的居多,但在很多大公司面试时(像我在百度面试时,人家都豪不理会),因为这些公司重视的是基础,项目经验可以培养,但基础需要花狠劲才能掌握牢固。这些框架对你现在的作用是熟悉一下源码,看看它们怎么实现的。我也是大三才学的前端,并且边读框架边学的js,如果你对这样学感兴趣,推荐你读一下prototype.js的源码。jquery的源码太过讲究技巧,不太适合初学者去读。

最后谈一下准备作品这块,去年开始前端界衍生了一个新的职位,叫无线前端开发工程师,说白了就是在iphone和android手机上做网站,用到的技术基础还是js跟css,但不需要像pc那样考虑兼容性(IE6是很恶心的),最重要的,就是对html5和css3支持度比较高,这个职位目前还是很热门的,你可以往这个方向发展,掌握好基础后学这些新技术还是很容易的。利用css3和html5写一些demo绝对可以让考官眼前一亮。

如果你学了一学期掌握了基础,可以尝试联系我,百度还是很欢迎热爱技术的人的,特别是女生(嘿嘿),最后祝你成功。

eclipse里怎么查看方法源码

查看Eclipse中导入包的源码:1、项目中的WebAppLibraries选项2、然后找到刚导入的jar包,并3、双击其中的一个Class文件4、点AttachSource..按钮,在弹出窗口中选第二项Externallocation5、点右面的ExternalFile,选择源文件所在路径,选编码格式,一般默认GBK,点OK以后双击这个包下面的class文件,就能直接看到源码了:

如何用html5构建移动端的webapp

H5edu教育html5开发为您解答:

移动web在当今的发展速度是一日千里,作为移动领域的门外汉,在这段时间的接触后,发现前端开发这一块做一个小小的总结。

1.四大浏览器内核

1.Trident (IE浏览器) :因为在早期IE占有大量的市场份额,所以以前有很多网页是根据这个Trident的标准来编写的,但是实际上这个内核对真正的网页标准支持不是很好,同时存在许多安全Bug。

2.Gecko:( FireFox )优点就是功能强大、丰富,可以支持很多复杂网页效果和浏览器扩展接口,缺点是消耗很多的资源,比如内存。

3.Webkit: ( Chrome/ Safari / UC )优点就是Webkit拥有清晰的源码结构、极快的渲染速度,缺点是对网页代码的兼容性较低,会使一些编写不标准的网页无法正确显示。

4.Presto: ( 欧朋 ) Presto内核被称为公认的浏览网页速度最快的内核,同时也是处理JS脚本最兼容的内核,能在Windows、Mac及Linux操作系统下完美运行。

移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,基于Webkit内核,可使用Chrome浏览器调试即可。

2.手机浏览器

浏览器已经逐渐从传统桌面转向手机端,竞争也越来越激烈。目前国内市场主流的手机浏览器:UC、百度、欧朋、QQ、海豚、safari、Chrome,这些浏览器都是基于webkit内核的,兼容性方面不存在问题,同时对html5和css3的支持很好,所以,大胆地应用html5和css3技术吧。

在开始编写webapp时,前端工程师使用HTML5,而放弃HTML4,因为HTML5可以实现一些HTML4中无法实现的丰富的WEB应用程序 的体验,可以减少开发者很多的工作量,当然了你决定使用HTML5前,一定要对此非常熟悉,要知道HTML5的新标签的作用。比如定义一块内容或文章区域 可使用section标签,定义导航条或选项卡可以直接使用nav标签等等。

3.终端分辨率

手机分辨率比PC分辨率要庞杂得多,各种分辨率有木有?大小差距那么大有木有?这在一定程度上给页面制作带来了不小的麻烦。所以针对这样的因素,必须有充分的考虑。考虑到浏览器自适应,需要设计和制作完成各种不同的方法。

1) 市场上主流手机生产商的产品分辨率。经过调研发现,目前主流的手机分辨率为:480*800像素、320*480像素,而1280*720像素(720P)会是接下来的趋势。这些都是很粗略的统计,要有精确的数据需要花费不少的精力,那是数据分析人员的工作。

2) 项目目标群所持设备的分辨率。项目目标群即用户,用户拥有什么样的手机分辨率,从一定程度上来说比第一点来得更加重要,它决定着项目开发的方向。

4.响应式web开发

在编写CSS时,我不建议前端工程师把容器(不管是外层容器还是内层)的宽度定死。为达到适配各种手持设备,我建议前端工程师使用自适应布局模式(支付 宝 采用了自适应布局模式),因为这样做可以让你的页面在ipad、itouch、ipod、iphone、android、web safarik、chrome都能够正常的显示,你无需再次考虑设备的分辨率。

响应式web开发不是一项开创性的技术变革,简单地说,响应式web设计采用了媒体查询、流式布局、液态图片三项技术,把它们组合在一起来制作页面,使得页面不只在传统桌面,在平板电脑和手机上,各种不同的分辨率都能够完美显示。而要做到这点,我觉得不难,请继续往下:

1) 准备工作:

a) 插件安装:window resize。您可以通过下载安装谷歌浏览器插件,安装成功后,当您调整浏览器窗口时,在浏览器右下角会有灰度提示当前窗口和类似于手机视图的大小提示。

b) 编辑器安装:Hbulder或Webstorm

c) 弄清视图和屏幕的区别。视图是浏览器的内容显示区域,屏幕是设备的物理显示区域。比如视图宽度我们一般用width表示,而屏幕宽度是用device-width来表示。相信做过手机页面的童鞋都经常见过这段代码:

meta name="viewport" content="width=device-width,initial-scale=1.0"

其中width=device-width就是说把页面宽度设置成和屏幕宽度一样。

d) 响应式设计创意网站收集 。这里有很多响应式Web设计的网站,供您参考和学习。

2) 征途ING:

e) 响应式web设计之媒体查询:

为了减少http请求,我想在css样式表里进行媒体查询会是个不错的选择,而不是在页面head部分使用link进行加载。样式表里的媒体查询格式为:

@media screen and (max-width:960px){}

大括号内部书写样式。该语句相当于判断语句,有两个条件,一个是视口宽度最大不超过960px,screen代表显示屏,这两个条件都具备了,就调用大括号内的样式。

f) 响应式web设计之流式布局:

流式布局以百分比进行布局。最重要是时刻关注元素的父级层,所有的元素都是以父级层为基准。流式布局的应用是为了和媒体查询完美地结合,形成平滑的布局变 化跳转效果。一般而言,media里的样式多以width、padding、margin、font-size、line-height这些为主。

g) 响应式web设计之液态图片:

要实现液态图片,只需加入如下代码:img{max-width:100%;}

web移动头部书写

1、首先我们来看看webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用

meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" /

这个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;

meta content="yes” name=" apple-mobile-web-app-capable" /

meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;

meta content="black" name=" apple-mobile-web-app-status-bar-style" /

meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;

meta content="telephone=no" name="format-detection" /

meta标签表示:告诉设备忽略将页面中的数字识别为电话号码

3条大神的评论

  • avatar
    访客 2022-07-11 下午 12:15:19

    request. OkHeaders.addCookies(result, cookies); } //此处省略n行代码...... return re

  • avatar
    访客 2022-07-11 上午 11:21:11

    率要庞杂得多,各种分辨率有木有?大小差距那么大有木有?这在一定程度上给页面制作带来了不小的麻烦。所以针对这样的因素,必须有充分的考虑。考虑到浏览器自适应,需要设计和制作完成各种不同的方法。1) 市场上主流手机生产商的产品分辨率。经过调研发现,目前主流的手机分辨率为:480*800像素、320*4

  • avatar
    访客 2022-07-11 上午 03:05:27

    the request. OkHeaders.addCookies(result, cookies); } //此处省略n行代码...... return result.b

发表评论