在'https://www.google.com/'上进行GET操作时收到此错误。
无法加载https://www.google.com/:对预检请求的响应未通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。因此,不允许访问来源“ http://localhost:4200”。响应的HTTP状态码为405。
在服务器端,我使用cors:
server.use(cors({
origin: '*',
credentials: true
}));
server.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,
Content-Type, Accept");
next();
});
server.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
next();
});
在客户端,我有一个cookieService:
getCookies(URL) {
const headers = new Headers();
**headers.append('Access-Control-Allow-Origin', '*');**
return this.http.get(URL, { headers: headers }).map(res => res.json());
}
在角度组件上,我将此函数称为:
searchCookies() {
this.cookieService.getCookies('https://www.google.com').subscribe();
}
有没有一种方法可以将此标头添加到GET响应中?还是有另一种方式可以访问https://www.google.com之类的外部URL?
谢谢! :)
答案 0 :(得分:0)
localhost
的CORS标头不适用于google-CORS的整个概念是第三方服务器(在这种情况下,{ {3}})可以保护自己免受跨源资源共享的侵害。
TL; DR-https://google.com不允许localhost
访问网站。如果您想抓取该网站-您必须从node.js本身而不是客户端JS访问它。