从私人隐藏链接获取文本

时间:2016-10-18 14:51:47

标签: javascript angular typescript http-headers httpresponse

我有应用程序从stash原始文件获取代码。从公共存储库中删除很简单,它看起来像这样:

  public getRawFile(rawLink: string) {
    return this.http.get(rawLink).map((res: Response) => res.text());
  }

但是现在我想从存储原始文件中获取代码,但是从私有存储库获取代码。如果用户具有访问权限(登录到存储),则加载原始文件中的源代码。

如果我以同样的方式尝试,我会反感:

    XMLHttpRequest cannot load 'private_stash_file_link'. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
    EXCEPTION: Response with status: 0  for URL: null
    Uncaught Response with status: 0  for URL: null

如何处理此问题,Cookie,获取请求的特定选项,是否可能?

编辑1。

试过:

  public getRawFile(link: string) {
    let headers = new Headers();
    headers.append('Access-Control-Allow-Headers', 'Content-Type');
    headers.append('Access-Control-Allow-Methods', 'GET, OPTIONS');
    headers.append('Access-Control-Allow-Origin', '*');
    let options = new RequestOptions({headers: headers, withCredentials: true});
    return this.http.get(link, options).map((res: Response) => res.text());
  }

但私有存储库的结果相同..

plunker

1 个答案:

答案 0 :(得分:0)

您发出请求的服务器必须实施CORS以从您的网站访问(跨源资源共享(CORS))授予JavaScript。因此,如果您可以访问要抓取的位置,则在接收端的响应中添加以下HTTP标头:

Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: *.example.com

确保替换" * .example.com"使用发送数据/获取数据的主机的域名。这样做可以解决您的问题。