a标签不跳转,本来是跳转却变成了下载 原因与解决方法

今天一位群友在用Python开发的AI绘画程序“Stable Diffusion”的时候,结果启动后,浏览器打开“http://127.0.0.1:7860”,查看网页源码发下有以下几个a标签链接不跳转,a标签本来是跳转却变成了下载。

<link rel="stylesheet" property="stylesheet" href="file=style.css?1681310584.2141063">

 

浏览器打开“http://127.0.0.1:7860/file=style.css?1709955704.0796795”是下载。

http://127.0.0.1:7860/file=style.css下载

 

原因:

绝大多数情况下,点击a链接后查看控制台,请求头是Content-Type:text/html;这种情况下可以跳转,但是偶尔会出现类型不是html,而是其它类型,那这时候浏览器就误认为它是可以下载的,所以就下载而不是跳转。

 

Content-Type类型也有很多,大家可以自行去了解一下。

 

解决方法

下面说几个给大家参考的解决办法:

 

1、在a标签上添加 rel=“noopener noreferrer”

我们知道rel="noopener noreferrer"的作用是能保证网页跳转的时候具有一定的安全性,如我们要跳转到第三方网站,添加这个属性后,第三方就不能拿到源页面的window.opener。但是,能不能解决跳转变成下载的bug没法测,所以不知道有没有用。

 

2、设置后台服务器返回的类型。

配置web服务器的配置, Response响应要设置为类似如:ContentType=“text/html”;

 

下面将谈一谈我是如何花几个小时找到原因并解决此问题的?

 

1、首先,浏览器打开“http://127.0.0.1:7860”,查看了一下“网页源码”。

发现有几个类似“file=style.css”如下的地方:

<link rel="stylesheet" property="stylesheet" href="file=style.css?1681310584.2141063">
<link rel="stylesheet" property="stylesheet" href="file=extensions/sd-webui-additional-networks/style.css?1680877854.9212754">
<link rel="stylesheet" property="stylesheet" href="file=extensions/stable-diffusion-webui-images-browser/style.css?1681310719.5052688">

file=style.css

 

2、其次,经过网络检测,file=style.css 这种类似的请求,状态码响应也是200 ,没有所谓的404等其它异常代码,也能正常返回数据。http://127.0.0.1:7860/file=style.css?

 

3、最后发现,浏览器直接打开类似如下的网址是打不开的,打开是下载状态。

http://127.0.0.1:7860/file=style.css?1709955704.0796795
http://127.0.0.1:7860/file=extensions/sd-webui-additional-networks/style.css?1680877854.9212754
http://127.0.0.1:7860/file=extensions/stable-diffusion-webui-images-browser/style.css?1681310719.5052688

file=style.css下载

 

4、结果发现是Response响应数据返回的类型错了,它是:

content-type: application/x-css

Response content-type: application/x-css

 

但是,正常的 .css 类型应该是:

content-type:text/css

才对。

 

5、由于SD也算是半个windows项目吧!毕竟用了windows的依赖,根据以往经验:

 

windows 运行项目访问页面加载css样式时报错:

Resource interpreted as Stylesheet but transferred with MIME type application/x-css

上面意思是说样式表已经识别出来了但是被转换成 application/x-css格式了。

这是因为windows环境下读取了regit注册表中的Content Type。

 

解决方法只需要修改如下:

第一步:运行cmd: 输入“regedit”命令并回车。

第二步:在注册表编辑器 HKEY_CLASSES_ROOT 中找到 .css ,点击 .css 文件夹  修改 Content Type 类型为 text/css在注册表 HKEY_CLASSES_ROOT 中找到 .css ,点击 .css 文件夹  修改 Content Type 类型为 text/css

第三步:重启电脑让注册表生效。

 

6、重启SD后,进去浏览器可能还是有缓存,style.css可能还是打不开;可以等缓存失效,也可以用“Ctrl+F5”强制来刷新。

付杰
  • ¥ 1999.0元
  • 市场价:2999.0元
  • ¥ 99.0元
  • 市场价:159.0元
  • ¥ 89.0元
  • 市场价:129.0元
  • ¥ 89.0元
  • 市场价:129.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: