发出 HTTP 请求的访问控制标头问题
access-control-header issues making an http request
我在 Win 2008 R2 Ent 服务器上的 IIS 中安装了一个 asp.net mvc5(带有 Angular)网站,在服务器本身上运行站点时一切运行良好。
一旦我们从服务器外部访问该站点,我就会收到与 CORS 相关的错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost/api/init?space=razor_RAGE&environment=razor_RAGE&clariteConfig=E:'razor_RAGE'master'bin'clarite_config.xml. This can be fixed by moving the resource to the same domain or enabling CORS.
我认为解决方案是在http请求中添加正确的标头:
'Access-Control-Allow-Origin': 'true'
但是它似乎并没有解决CORS问题。
这是我从 JavaScript 发出的请求的示例(在服务器上都很好,但在服务器之外不起作用):
this.getRazorInitParams = function () {
var deferred = $q.defer();
deferred.notify("Getting init parameters...");
var razorEnvParams = [];
$http({
method: 'GET',
encoding: 'JSON',
headers: {
'Access-Control-Allow-Origin': 'true'
},
url: 'breeze/Rage/GetRazorEnv'
}).success(function (data, status, headers, config) {
razorEnvParams = data;
deferred.resolve(razorEnvParams);
}).error(function (data, status, headers, config) {
console.log("Error in userContext.js, getRazorInitParams " + status);
});
return deferred.promise;
}
这是来自 c# api 层的狙击:
public class initController : ApiController
{
public HttpResponseMessage Get()
{
// space, env, dom, cConf vars all defined here..
string resp = DynAggrClientAPI.initApp( space, env, dom, cConf );
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(resp, Encoding.UTF8, "application/json");
return response;
}
}
我正在寻找正确的解决方案。我在这里缺少什么吗?
提前感谢,
鲍勃
标头
的值应为特定域或星号,以指示 CORS 请求可以来自任何域。
Access-Control-Allow-Origin: 'http://example.org'
或
Access-Control-Allow-Origin: '*'
另请注意,您不能将多个域"列入白名单"。要么是一个,要么全部。
如果你打算使用所谓的"复杂"请求(即简单的GET或POST请求以外的其他请求),你还需要设置Access-Control-Allow-Methods
字段,如果你想检索特定的标头,Access-Control-Allow-Headers
也是如此(尽管在这种情况下,它们不是必需的)。
相关文章:
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- CORS:否'访问控制允许来源'header-但是php设置头文件
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- CORS:访问控制允许原点不等于提供的原点
- 飞行前响应中的访问控制允许标头不允许Angularjs请求标头字段访问控制允许标题
- django没有访问控制允许删除原始标头
- HTML5 Canvas访问控制允许原始错误
- Android、iOS和Windowsphone的PHP访问控制
- 访问控制台中的匿名函数
- 旧系统的 CORS 问题 - 没有“访问控制允许源”标头
- 发出 HTTP 请求的访问控制标头问题
- 电影数据库“访问控制允许来源”问题
- 访问控制允许在url中使用和不使用www的来源问题
- Yammer JS SDK认证示例访问控制允许来源问题github.io
- 访问控制导致不同呼叫出现问题
- 访问-控制-允许-起源问题,而开发谷歌Chrome扩展
- 当尝试使用Ajax获取图像时,访问控制源问题
- Javascript, Chrome扩展开发,XMLHttpRequest访问-控制-允许-起源问题
- 服务器上的访问控制允许原点出现问题
- jQuery.getJSON-访问控制允许原始问题