我有应用程序从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());
}
但私有存储库的结果相同..
答案 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"使用发送数据/获取数据的主机的域名。这样做可以解决您的问题。