【问题标题】:Handling CSP Errors处理 CSP 错误
【发布时间】:2018-01-11 23:44:30
【问题描述】:

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

消息头:

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

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

服务器:Microsoft-IIS/8.0

严格传输安全性:max-age=16070400

content-security-policy: frame-ancestors *.whoscored.com;升级不安全请求;

x-content-security-policy: frame-ancestors *.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');
});

【问题讨论】:

    标签: node.js https content-security-policy


    【解决方案1】:

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

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

    CSP 应该不是真正的问题,它用于在该页面上加载其他资源,它不会首先阻止人们下载该页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      相关资源
      最近更新 更多