否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
No 'Access-Control-Allow-Origin' header is present on the requested resource (AngularJS + NodeJs) In IISNOde
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
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- "资源不足错误“;当从Chrome控制台重复发出ajax请求时
- ajax请求返回me“;错误404”;即使资源存在
- XMLHttpRequest无法加载.否'访问控制允许来源'标头存在于请求的资源上
- 将servlet请求从javascript发送到java给出了“;请求的资源不可用”;
- 否'访问控制允许来源'请求的资源上存在标头.-Pinterest oauth实现
- 否'访问控制允许来源'标头存在于请求的资源上.起源'http://localhost:8100&
- 否'访问控制允许来源'标头存在于请求的资源上.原点''因此不允许访问
- 否'访问控制允许来源'当跨域设置为true时,请求的资源错误中存在标头
- AngularJS:没有'访问控制允许来源'标头存在于请求的资源上
- 亚马逊s3 Javascript-否'访问控制允许来源'标头存在于请求的资源上
- 是否有任何事件在浏览器请求另一个资源(如图像)之前触发
- 在AngularJS$资源模块上请求之前获取URL
- Angular$http$资源等价于PDF GET请求
- Azure Blob 存储 请求的资源错误中不存在访问控制允许源标头
- Socket.io 请求的资源上不存在“访问控制允许源”标头.因此,不允许访问源“http://localhost”
- Windows上的CouchDB说请求的资源上不存在“Access-Control-Allow-Origin”标头
- 跨源资源错误:请求的资源上不存在“访问控制允许源”标头
- 区分对$http的应用程序调用和 Angular 对拦截器中静态资源的请求
- 什么会导致Firefox在执行外部脚本后多次请求资源