| 引入本地资源跨域问题,第1张

学习前端上的一些新东西,常常从一个简单的 html 文件开始,然后通过 src、href 引入一些脚本或资源来查看效果。比如,在一个 html 中引入 less 文件 ,使用浏览器预览,结果如下图所示:

原因呢?

浏览器告诉我跨域了,并且称: CORS 策略 只支持这些协议:http、data、 chrome、chrome-extension 以及 https。显然,如果 html 文件中引用了其他资源,直接双击 html 文件、使用 file 协议 在浏览器中打开这种方式,不受浏览器 CORS 支持。

兵来将挡,既然是协议的问题,那就转协议。下方高能 >>

使用 Anywhere

anywhere 是一个随启随用的静态服务器,它可以随时随地将当前目录变成一个静态文件服务器的根目录。使用步骤如下:

此时,便可以像资源管理器一样,可视化预览目录下的一切文件,而且不存在跨域问题,可使用的协议是:http 或 https

令人惊喜的是,当上图“新建文件夹”中是这样一堆文件的时候,浏览器自动预览了 html 文件:

关于 anywhere 的指令:

尽管上面已经针对某些异常场景给出了完美的方案。我的疑问在于,为什么“裸奔”情况下,href 引入 css文件 ,src 引入 js 文件 ,却没有跨域毛病。因缺乏理论支撑,暂时存疑。

静态网站根本不需要什么服务器,是个电脑就能当服务器使用,如果现在的每个静态文件有相同的内容,而且要改成的内容也相同那就好处理多了,直接用工具(Dreamweaver)或其他的网页编辑工具替换就可以了,如果改成不一样的那就麻烦了

mmap主要实现方式是将读缓冲区的地址和用户缓冲区的地址进行映射,内核缓冲区和应用缓冲区共享,从而减少了从读缓冲区到用户缓冲区的一次CPU拷贝。

相比mmap来说,sendfile同样减少了一次CPU拷贝,而且还减少了2次上下文切换。

sendfile是Linux21内核版本后引入的一个系统调用函数,通过使用sendfile数据可以直接在内核空间进行传输,因此避免了用户空间和内核空间的拷贝,同时由于使用sendfile替代了read+write从而节省了一次系统调用,也就是2次上下文切换。

整个过程发生了2次用户态和内核态的上下文切换和3次拷贝,具体流程如下:

sendfile方法IO数据对用户空间完全不可见,所以只能适用于完全不需要用户空间处理的情况,比如静态文件服务器。

[1] https://zhuanlanzhihucom/p/357820303

传统的web项目,一般都将静态资源存放在 webroot的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 或许就会很低下了。这种情况下一般都会需要一个静态资源的服务器。

搭建nginx服务器首先得安装nginx服务,关于nginx服务的安装可以参考我的另一篇博客《nginx服务安装》这里直接介绍静态服务器的配置

进入nginx安装目录的conf目录下,修改nginxconf文件,在一个server{}中添加 一个location 部分配置代码如下

root@ubuntu:/usr/local/nginx/conf# vi nginxconf

server {

listen 80;

server_name localhost;

location / {

root html;

index indexhtml indexhtm;

}

location /image/ {

root /usr/local/myImage/;

autoindex on;

}

}

从上面的配置可以看出来 端口为80,server_name为localhost(写ip地址也可以)

location /image/ {

root /usr/local/myImage/;

autoindex on;

}

这个配置表示输入 localhost:80/image/ 时会访问本机的/usr/local/myImage/image/ 目录。所以要新建/usr/local/myImage/image/ 目录,同时还要在nginx安装目录的html目录中新建一个 与 location中 image同名的image目录,虽然该目录里面什么也没有,在/usr/local/my Image/image/ 中我们放一张1jpg上去,重启nginx服务,就可以通过 localhost:80/image/1jpg访问了

root@ubuntu:/usr/local/nginx/html# mkdir image

root@ubuntu:/usr/local/nginx/html# mkdir /usr/local/myImage/image

#放一张照片上去#

root@ubuntu:/usr/local/nginx/html# cd /usr/local/myImage/image

root@ubuntu:/usr/local/myImage/image# ls

1jpg

root@ubuntu:/usr/local/myImage/image#

重启 nginx

root@ubuntu:/usr/local/nginx/sbin# /nginx -s reload

root@ubuntu:/usr/local/nginx/sbin#

打开浏览器 输入 server_name:80/image/1jpg 就可以访问该静态

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » | 引入本地资源跨域问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情