2016-05-18 39 views
0

HI我有一个Angular Aplication从NodeJS中的REST API使用,都从IIS我正在使用IISNode。在请求的资源(AngularJS + NodeJs)上没有'Access-Control-Allow-Origin'头部在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.只有在开发版本的生产版本从来没有得到错误。奇怪的是,没有得到的错误总是例如与以前的方法,我得到的错误只有2 o 3次为每10个电话。

我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.coonfig文件中像这样定义一样:

<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> 

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

感谢您的帮助

SOLUTION

在我的情况的解决办法是改变以下这configuration并添加此行我的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> 

回答

-1

问题Ajax请求对开发者来说相当普遍。

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

下面是一个博客,可以很详细地解释这个。它还包含一些服务器端代码。在C#中添加标题的方式是通过以下语句。

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

还可以包括*代替mydomain.com,但它违背了安全措施,做这样的请求的阻塞的全部目的。

希望有所帮助。

感谢

帕拉斯

+0

嗨@pparas谢谢您的回答;抱歉,但我可以看到博客的链接。尊重我尝试用两种不同方法添加标题的解决方案。在我的app.js文件和web.config文件中的服务器中(使用的代码可以检查问题);但两者都得到相同的错误。 – oriaj

相关问题