处理CSP错误



我正在编写一个客户端程序,通过HTTP/HTTPS连接到网站。程序首先尝试使用HTTPS连接到服务器。然而,在收到301的响应状态代码后,我尝试通过向HTTP服务器发出新的请求,在出现301时使用HTTP处理请求。正如通常使用数据一样,我使用http.clientRequest的on方法在http.get()的"data"事件上添加了一个侦听器回调。但是,控制台输出中没有数据。我怀疑这是由于我收到的以下CSP标头的请求:

邮件头:

内容类型:text/html;charset=UTF-8

位置:http://www.whoscored.com/

服务器:Microsoft IIS/8.0

严格的运输安全:最大年龄=16070400

内容安全策略:框架祖先*.whoscored.com;升级不安全的请求;

x-content-security-policy:框架祖先*.whoscored.com;升级不安全的请求;

日期:周日,2017年10月29日02:44:33 GMT

连接:关闭

内容长度:148

记录数据:

代码如下所示:

Https.get(options, (res: Http.IncomingMessage): void => {
logger.log('HTTPS Client for ScrapeX');
logger.log('-------------------------');
logger.logHeaders(res.headers);
switch(res.statusCode) {
case 200:
(() => {
//
logger.log('The connection was established successfully');
})();
break;
case 301:
(() => {
// fallback to http
let buf = '';
httpClient((res1) => {
logger.log('HTTP Client');
logger.log('----------------');
logger.logHeaders(res1.headers);
}, n_options)
.on('error', (err) => {
logger.log('Error: ' + err.message);
logger.printStack(err);
})
.on('data', (chunk: string): void => {
buf += chunk;
})
.on('close', () => {
logger.log('Logging the data: ');
logger.log(buf);
});
})();
break;
}
})
.on('error', (err) => {
logger.log(err.message);
logger.log(err.stack);
})
.on('close', () => {
logger.log('Connection closed');
});

您无法使用HTTP连接到该服务器,这是您的问题;它同时使用CCD_ 1,更重要的是使用strict-transport-security。任何尊重strict-transport-security的浏览器都会拒绝通过不安全的HTTP进行连接。

不知道该告诉你什么——在这种情况下,你根本无法在HTTP中重试,或者至少,它总是会出现错误,或者只是重定向到HTTPS。

CSP不应该是一个真正的问题,这是为了在该页面上加载其他资源,它一开始就不会阻止人们下载该页面。

最新更新