否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上

No 'Access-Control-Allow-Origin' header is present on the requested resource (AngularJS + NodeJs) In IISNOde

本文关键字:请求 资源 IISNOde AngularJS+NodeJs 访问控制 存在      更新时间:2023-09-26

HI我有一个Angular应用程序,它从NodeJS中的REST API消费,两者都部署在IIS服务器中,从Node I使用IISNode。

我只在生产版本中得到错误XMLHttpRequest cannot load http://181.49.53.186:8006/DynamicContent/form/list. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://web.procesosyservicios.info:3006' is therefore not allowed access.,在开发人员版本中从未得到错误。奇怪的是,no总是得到错误——例如,在前面的方法中,我每10次调用只得到2到3次错误。

我的app.js文件有以下配置:

router.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET, POST');
  res.header('Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Authorization');
  next();
});

备选方案我删除了前面的行,并在我的web.config文件中定义了相同的行,如下所示:

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin"  value="*" />
        <add name="Access-Control-Allow-Methods" value="GET,POST" />
        <add name="Access-Control-Allow-Headers" value="X-Requested-With,content-type,Authorization" />
    </customHeaders>
</httpProtocol>

但结果是相同的——有时只是工作。我不知道什么是错误。

感谢的帮助

解决方案

在我的案例中,解决方案是根据此配置更改我的web.config文件并添加以下行:

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin"  value="*" />
        <add name="Access-Control-Allow-Methods" value="GET,POST" />
        <add name="Access-Control-Allow-Headers" value="X-Requested-With,content-type,Authorization" />
    </customHeaders>
</httpProtocol>

跨域Ajax请求的问题对开发人员来说相当常见。

解决此问题的最佳方法是从服务器端向响应对象添加一个标头。

这里有一个博客,它确实详细地解释了这一点。它还包括一些服务器端代码。在c#中,添加头的方法是通过以下语句。

Response.AddHeader("Access-Control-Allow-Origin", "mydomain.com");
Response.ContentType = "application/json";

你也可以包括一个*而不是mydomain.com,但它违背了阻止此类请求的安全措施的全部目的。

希望能有所帮助。

感谢

Paras

相关文章: