【技术】原生JavaScript从非同域名网页获取文本

【技术】原生JavaScript从非同域名网页获取文本

项目初衷

用electron做个关于Bugdows的App。想要获取版本支持状态,毕竟是Bugdows,想要提示一下。electron是个App,改不了提示,一旦封包就改不了了,况且是要分发给用户。就诞生了JavaScript从非同域名网页获取文本。Go!

代码预览

!!!!服务端需要允许跨域请求

客户端:

<script>
var req = new XMLHttpRequest(); //定义变量:创建一个新的请求
req.open('GET', 'ServerUrl');//向ServerUrl发送GET请求
req.send(null);
if(req.status == 200) 
{
	document.write(req.responseText);//如果响应200,获取文本并输出
}
var jsonp = document.createElement("script");
</script>

代码解释

第三行:

req.open('GET', 'ServerUrl');

ServerUrl是服务器网址,比如获取https://yourdomain/test.txt的文本,就填https://yourdomain/test.txt
第五,六,七,八行

if(req.status == 200) 
{
	document.write(req.responseText);
}

这个是如果网站响应200,那么就获取这个网站的文本内容并输出

问题

出现Refused to load the script because it violates the following Content Security Policy directive: "style-src 'self' 'unsafe-inline怎么办?
解答:

<meta http-equiv="Content-Security-Policy: default-src 'self' ServerDomain" />

**添加上面这个进Head即可,将ServerDomain替换成需要获取文本的服务器的域名即可
意思:让CSP安全策略允许JavaScript从外部获取数据。原本JavaScript是不允许的,默认拦截
**

最后

代码很短,可以获取许多文本,可以达到预期要求 )

我是小白,如有错误,请大佬多多指教

Licensed under CC BY-NC-SA 4.0