angularjs – Angular2到REST WebApi CORS问题

前端之家收集整理的这篇文章主要介绍了angularjs – Angular2到REST WebApi CORS问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用angular2前端和WebApi后端.
webapi启用CORS
var cors = new EnableCorsAttribute("*","*","*");
GlobalConfiguration.Configuration.EnableCors(cors);

它的作品,因为我有不同的网站(jquery / javascript)使用这个api.但是对于角度2,它不会.我收到以下消息:

Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

也许与“预检要求”有关?

谢谢你的帮助.
马科斯

我的Angular2应用程序中有同样的问题.
如已经说明的那样,问题在于,在客户端发出的每个请求都将预检要求发送到服务器之前.

这种请求有一个OPTIONS类型,服务器有责任发送状态为200的预检应答,并设置接收来自该客户端的请求的头文件.

这是我的解决方案(带快递):

// Domain you wish to allow
res.setHeader('Access-Control-Allow-Origin','http://localhost:3000');

// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods','GET,POST,PUT,DELETE');

// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers','YOUR-CUSTOM-HEADERS-HERE');

// Set to true if you need the website to include cookies in  requests
res.setHeader('Access-Control-Allow-Credentials',true);

// Check if preflight request
if (req.method === 'OPTIONS') {
    res.status(200);
    res.end();
}
else {
    // Pass to next layer of middleware
    next();
}

如您所见,我设置标题,然后如果请求类型为OPTIONS,则提取.在这种情况下,我发回状态200并结束响应.

以这种方式,客户端将被授权,您还可以在所有请求中设置自定义标头.

猜你在找的Angularjs相关文章