首页 新闻 会员 周边 捐助

B/S结构中的css问题

0
悬赏园豆:100 [已解决问题] 解决于 2017-01-19 15:18

B:一般的浏览器,如360浏览器

S:linux系统(虚拟机VM下的ubuntu16.04版本)作为服务器

当我进行了如下图格式的css输入的时候,出现了只有将文件中的menu.css的内容全部使用

strcat来进行添加进来可以得到相应的web效果,但是当使用标签<link>的时候就不行了,请教一下这在linux中怎么解决使用这个问题,相对而言在一个html中调用<link>的时候还是可以的,转到linux这样引用的时候就不行了,请教大神们呢!!!!(注意,我的menu.css和linux服务器文件全部在同一个文档中,不存在分层目录进行调用)

Psrion的主页 Psrion | 初学一级 | 园豆:29
提问于:2017-01-17 23:43
< >
分享
最佳答案
0

在网页上点右键查看源代码.对比2种情况不一样的地方

收获园豆:80
吴瑞祥 | 高人七级 |园豆:29449 | 2017-01-17 23:46

对比了,和我的预料一样,就是没有得到相应的数据,你看

Psrion | 园豆:29 (初学一级) | 2017-01-18 11:29

@OlderDriver: 那就跟楼下说的,你在./color.css上点右键在新窗口打开能不能找到这个文件

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-18 11:56

@吴瑞祥: 找不到这个文件,那就说明并不是这个地址中的,什么相对地址,绝对地址都试过了,就是不行。不知道是不是在Linux服务器使用C语言获取外部样式的需要打开读取文件的缘故,还是当服务器获取外部样式之后发送给浏览器的数据本省获取不了,但是内部样式还是可以的,这就有点奇怪了。我试过使用Linux中的io操作,可以实现,但是和直接使用<link>标签完全相反,标签link的链接不行。

Psrion | 园豆:29 (初学一级) | 2017-01-18 14:38

@OlderDriver: 看你用的web服务器怎么想外提供静态文件吧.和linux没啥关系.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-18 14:54

@吴瑞祥: 我这里不是web服务器了,是Linux服务器

Psrion | 园豆:29 (初学一级) | 2017-01-18 14:55

@OlderDriver: linux服务器里面肯定也跑了个web服务啊...

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-18 15:10

@吴瑞祥: 我用C语言写,为什么还要跑web服务???我又不是走Apache这种东西。我是直接使用tcp和http与浏览器(client)来进行相互交流,获取到client返回的http头部文件,那么我就使用tcp打包数据,并使用http协议响应,把http的头部解析得出我需要的东西之后,我就直接发送一个含有网页的代码给client,不需要经过什么web

Psrion | 园豆:29 (初学一级) | 2017-01-18 15:16

@OlderDriver: 意思就是你自己写的web服务器,并且还没有对外提供一个获取静态文件的方式?

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-18 15:20

@吴瑞祥:是自己写的。就是获取外部的style样式不行,直接打进去就可以!怎么对外提供一个获取静态文件的方式?这个还没有了解---用C语言写的服务器怎么做这个工作?

Psrion | 园豆:29 (初学一级) | 2017-01-18 15:22

@OlderDriver: 判断http请求的url如果后缀是.css.你就去从静态文件路径(随便定一个)下读取这个文件然后返回

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-18 15:30

@吴瑞祥: 读取这个文件的一次就是讲这个.css的内容读出来返回给服务器的意思吗??还有就是在http中,当浏览器链接到Linux服务器的时候,发过来的url是没有数据的,也就是说,在程序建立链接之后的首次使用,是不呈现css的样式设置的喔??这个该怎么解决

Psrion | 园豆:29 (初学一级) | 2017-01-18 15:33

@吴瑞祥: (刚才回复错了)读取这个文件的意思就是讲这个.css的内容读出来返回给浏览器的意思吗??还有就是在http中,当浏览器链接到Linux服务器的时候,发过来的url是没有数据的,也就是说,在程序建立链接之后的首次使用,是不呈现css的样式设置的喔??这个该怎么解决

Psrion | 园豆:29 (初学一级) | 2017-01-18 15:34

@OlderDriver: 是的.他会有第二次请求.请求的url里会有color.css.方法是get.

这个请求你就读取color.css返回给浏览器就可以了

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-18 15:38

@吴瑞祥:比方说:浏览器发送数据过来,在http协议报头中没有获取到url的内容,然后服务器返回响应给浏览器,这个应该是默认的返回,不带css样式的返回,对吧??然后浏览器返回响应的时候,会带有首次在原本程序中的<link>中的css名称内容回来对吧???上面的分析就已经是tcp三次握手了,又怎么设置浏览器进行第二次发送数据呢???

Psrion | 园豆:29 (初学一级) | 2017-01-18 15:44

@OlderDriver: 你要自己写web服务器,就要会解析http报文的.

浏览器的请求是分别来的.

第一次请求网站地址.这是服务器返回html

如果html有资源连接(CSS文件)他会再发起一次请求,去请求这个文件.服务器再返回这个css文件内容.

你可以百度下http请求响应报文格式看看.

请求报文第一行后面就是url路径.里面就会有color.css

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-18 16:40

@吴瑞祥: 是这样的,我按照你的方法可以弄出来了,但是在不同的浏览器就不一定能显示呢。比如我在360浏览器可以显示外部的css设置,但是使用火狐,google浏览器就不能显示了,这个该怎么解决呢??

Psrion | 园豆:29 (初学一级) | 2017-01-19 15:14

@吴瑞祥: 弄好了,楼下的网络查询知道自己是写错了content-type的类型

Psrion | 园豆:29 (初学一级) | 2017-01-19 15:17
其他回答(4)
0

看看是不是外联样式(link方式)404了。Linux区分大小写,注意斜杠。

收获园豆:15
幻天芒 | 园豆:37207 (高人七级) | 2017-01-18 08:47

怎么查看是不是404???

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-18 09:55

@OlderDriver: F12中的Network

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2017-01-19 11:54

@幻天芒: 感谢你的帮助,经过你和楼上的帮助,已经解决了,谢谢

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-19 15:16
0

如果css和调用的页面路径为一个目录下,可以试着去除href里的“/”

 

不过建议去检查你实际访问的url路径,是不是也在/底下,比如/index.html还是/xxx/index.html

 

有/xxx的就给href里加上/XXX/menu.css

 

大小写也是个问题。如果你的web服务器对大小写敏感,需要是否文件名是大写了。

收获园豆:5
心雨纷扬 | 园豆:309 (菜鸟二级) | 2017-01-18 09:33

我修改了代码和文件的结构,在Linux系统中的文件结构如下图所示,我需要调用css中的.css文件,但是遇到的和上面提及的一样(当然之前的问题也没有解决好),怎么调用呢??另外在Linux系统作为服务器的时候,需要保留index.html这个文件吗??

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-18 09:50

@OlderDriver: 有外网路径么?可以外网访问你就把你的外网路径发出来。

支持(0) 反对(0) 心雨纷扬 | 园豆:309 (菜鸟二级) | 2017-01-18 13:59

外网路径是什么???

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-18 14:00

@OlderDriver: 网址啊,你这个只是局域网用的服务器么?

支持(0) 反对(0) 心雨纷扬 | 园豆:309 (菜鸟二级) | 2017-01-18 14:13

你的网站用什么语言开发的?

支持(0) 反对(0) 心雨纷扬 | 园豆:309 (菜鸟二级) | 2017-01-18 14:14

其实是使用http协议来设计的,在Linux中使用C语言来进行编写服务器,然后使用浏览器登录Ubuntu中的网址和端口,获取服务器的响应之后返回数据让浏览器显示网页(返回的网页数据中,使用的是html5语句,然后将每一条语句都获取之后发送给浏览器,可以实现显示),但是问题是,如果我在服务器中使用了一些外部html5的css样式,浏览器就获取不了这个样式的内容。同样,我使用C语言进行TCP/ip设置,线程监听浏览器连进来和处理,对于直接写到服务器的样式数据可以有效地显示,但是直接是用<link>进行调用的时候,就不行了

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-18 14:32

你一直理解错误了吧??我的是Linux服务器,不是web服务器

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-18 14:35

@OlderDriver: 对外提供web网页服务应该都算web服务器,只是一般是别人封装好的,你这个是自己写的。

支持(0) 反对(0) 心雨纷扬 | 园豆:309 (菜鸟二级) | 2017-01-19 15:41
0

href不要使用绝对路径。

西风古道 | 园豆:274 (菜鸟二级) | 2017-01-18 09:37

我全部可能的路径都尝试了,就是不行,如果在服务器(Linux系统)中的结构是下图这样的,如果调用css或者js文件的话,怎么使用<link>和<script>来进行引用呢??当然我这个调用也一定是使用Linux中的C或者C++语言,像上面一样使用strcat进行添加,我这边已经把http的报头放进了sendMsg中的了,那么使用strcat(sendMsg,"xxxxxx\n");的结构时候,怎么使用link标签来进行搞定css文件,使用script标签来搞定js文件?????

 

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-18 09:55
0

css/menu.css

CaiYongji | 园豆:1267 (小虾三级) | 2017-01-18 14:25

你说的应该是在html下的引用方式吧????我在服务器(linux服务器,不是web服务器)中调用外部样式,就不能显示样式的配置,但是直接打包数据发送给浏览器,那就没有问题。

 

支持(0) 反对(0) Psrion | 园豆:29 (初学一级) | 2017-01-18 14:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册