如果起始范围不为零,则HTTP范围请求不起作用

时间:2018-06-07 21:03:12

标签: angular rest typescript http github

这是一个简单的演示,说明了我的问题:https://funnyballoon.github.io/

我正在构建一个网站,其数据基于JSON对象(Loading random objects from a huge (>200MB) array file without loading the entire array)数组中随机选择的对象,我将该数组存储为Github上托管的静态文件。我的网站使用Angular。现在我尝试使用HTTP范围请求(https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests)来实现这种随机选择。这是我使用的方法:

  getPartialText(){
  let path:string='/mock/mockData.json';
  let headers = new HttpHeaders().set('Range', 'bytes=0-123').set('Access-Control-Allow-Origin','*');
  this.http.get(path,{headers:headers, responseType: 'text'}).subscribe((data:any)=>{
    this.secondPartialText=data;
  });
}

请注意,我将字节设置为'0-123',这非常有效,因此(可能)不是CORS问题。但是,当我将字节范围的开头设置为0以外的任何数字时,例如'bytes = 1-123',我收到此消息的错误:

  

(未知网址)的Http失败响应:0未知错误

这非常令人困惑。以下是我网站的简单演示:https://funnyballoon.github.io/。如您所见,如果您单击第一个按钮,一切正常,而当您单击第二个按钮时,日志中会出现错误。

这是我的代码:

  

app.component.ts

import { Component } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  public firstPartialText;
  public secondPartialText;

  constructor(public http: HttpClient){}

  getFirstPartialText(){
      let path:string='/mock/mockData.json';
      let headers = new HttpHeaders().set('Range', 'bytes=0-123').set('Access-Control-Allow-Origin','*');
      this.http.get(path,{headers:headers,responseType: 'text'}).subscribe((data:any)=>{
      this.firstPartialText=data;
      });}

  getSecondPartialText(){
      let path:string='/mock/mockData.json';
      let headers = new HttpHeaders().set('Range', 'bytes=1-123').set('Access-Control-Allow-Origin','*');
      this.http.get(path,{headers:headers, responseType: 'text'}).subscribe((data:any)=>{
      this.secondPartialText=data;
  });}
}
  

app.component.html

<div> <button (click)="getFirstPartialText()">Get First</button>      
  {{firstPartialText}}</div>

<div> <button (click)="getSecondPartialText()">Get Second</button>     
  {{secondPartialText}}</div>

如果有人能指出这里出了什么问题我很感激。谢谢!

0 个答案:

没有答案