所以考虑像这样的协议相对URL ;
//www.example.com/file.jpg
Run Code Online (Sandbox Code Playgroud)
只要我记得,我在脑海中的想法是,协议相对URL实际上是绝对URL.它们的行为与绝对URL完全相同,从不像相对URL那样工作.我不希望这会让浏览器找到一些东西
http://www.example.com///www.example.com/file.jpg
Run Code Online (Sandbox Code Playgroud)
URL定义了主机和路径(就像绝对URL一样),并且该方案继承自所使用的页面,因此它创建了一个完整的明确URL,即绝对URL.
对?
如果URL以方案和方案特定部分(此后)开头,则称为绝对URL.其他任何东西都是相对URL.
//http:
问题和答案都没有具体讨论协议相对的URL,所以我注意到它只能是措辞的疏忽.
但是,我现在也在我的开发中遇到了一个问题,其中只接受绝对URL的系统不能与协议相关的URL一起工作,我不知道这是设计还是由于错误.
通常与协议相关URL相关联的RFC3986部分也会在很多地方附加 "相对"一词.4.3然后继续说绝对URI定义一个方案.
所有这些反对我最初假设的证据都引出了我的问题;
协议相对URL是相对还是绝对的?
为什么使用<link href="//something.com/style.css" rel="stylesheet">而不是使用http://或https://在域名之前使用?
如果我们使用href=//它会改变链接?就像在SSL模式下它会自动更改为https://?
当我在我的.scss文件中使用以下代码时
@import url('//fonts.googleapis.com/css?family=SomeFont:400,700,400italic');
Run Code Online (Sandbox Code Playgroud)
我使用的SASS解析器(nodejs gulp-sass)愉快地从所述位置下载文件,并将其作为纯文本包含在编译输出中.
这是我的Gulpfile:
var gulp = require('gulp'),
sourcemaps = require('gulp-sourcemaps'),
autoprefixer = require('gulp-autoprefixer'),
minify = require('gulp-minify-css'),
rename = require('gulp-rename'),
sass = require('gulp-sass'),
uglify = require('gulp-uglify'),
plumber = require('gulp-plumber');
gulp.task('sass', function() {
gulp.src('www/sass/*.scss')
.pipe(plumber(function(err){
console.log(err);
this.emit('end');
}))
.pipe(sourcemaps.init())
.pipe(sass({
outputStyle: 'expanded',
errLogToConsole: true,
}))
.pipe(autoprefixer('last 2 version'))
.pipe(rename({suffix: '.min' }))
.pipe(minify())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('www/css'));
});
Run Code Online (Sandbox Code Playgroud)
问题是,我的网站使用HTTPS,并且当编译器请求文件时,它使用提取文件HTTP,因此返回的响应中的URL也HTTP导致加载控制台的警告,而字体不会加载.
有什么方法可以让编译器单独留下那一行吗?