Angular js1中的403禁止Rest API(节点js)
Posted
技术标签:
【中文标题】Angular js1中的403禁止Rest API(节点js)【英文标题】:403 forbidden Rest API (node js) in Angular js1 【发布时间】:2018-03-11 06:32:54 【问题描述】:我正在将在不同 localhost 上运行的 nodeJS REST API 调用到 Angular 应用程序中, 在邮递员中,我得到了预期的结果。但在角度应用程序中,由于 403 错误而下降,这是由于预检而发生的(预检响应具有无效的 HTTP 状态代码 403)。我尝试使用 $httpprovider 删除一些默认标头,还尝试在 access-control-allow-region 中使用正确的服务器名称而不是通配符(*),但没有任何效果。寻求帮助! 预检请求没有身份验证。 发布我的 req-respo snap
【问题讨论】:
XMLHttpRequest cannot load .... Response for preflight has invalid HTTP status code 401的可能重复 如果您尝试使用 Angular 解决它,没有任何帮助。它需要固定服务器端。这是CORS
问题。`
感谢@Ved,Vijayanath Viswanathan,sp00m
@ved,在服务器端添加代码行后解决了它。
【参考方案1】:
通过在服务器端处理 OPTIONS 请求,我能够解决问题, This post solved my problem
通过添加以下代码行
app.use(function (req,res,next)
if (req.method === 'OPTIONS')
console.log('!OPTIONS');
var headers = ;
// IE8 does not allow domains to be specified, just the *
// headers["Access-Control-Allow-Origin"] = req.headers.origin;
headers["Access-Control-Allow-Origin"] = "*";
headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, OPTIONS";
headers["Access-Control-Allow-Credentials"] = false;
headers["Access-Control-Max-Age"] = '86400'; // 24 hours
headers["Access-Control-Allow-Headers"] = "X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept";
res.writeHead(200, headers);
res.end();
else
//...
other requests
);
【讨论】:
以上是关于Angular js1中的403禁止Rest API(节点js)的主要内容,如果未能解决你的问题,请参考以下文章
启用 API 身份验证时,Apache 气流 REST API 调用失败并出现 403 禁止
Grails Spring Security REST得到403禁止