无法在我的本地主机

时间:2018-06-19 19:14:35

标签: node.js header

在'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?

谢谢! :)

1 个答案:

答案 0 :(得分:0)

您通过服务器响应添加到 localhost

CORS标头不适用于google-CORS的整个概念是第三方服务器(在这种情况下,{ {3}})可以保护自己免受跨源资源共享的侵害。

TL; DR-https://google.com不允许localhost访问网站。如果您想抓取该网站-您必须从node.js本身而不是客户端JS访问它。