Привет всем, у меня есть следующее в моем Global.asax файле:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS") {
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Pragma, Cache-Control");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
Я запускаю WCF и проверяю его, используя следующее:
function ajaxGetData() {
$.ajax({
url: 'http://localhost:62755/TutorialService.svc/Tutorial',
type: 'GET',
dataType: 'json',
success: function (data, textStatus, jqXHR) {
console.log(data);
},
failure: function (response) {
alert(response.d);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("error: ", jqXHR);
}
});
}
function ajaxPostData() {
$.ajax({
url: 'http://localhost:62755/TutorialService.svc/Tutorial/1',
type: 'POST',
data: JSON.stringify({"Tutorialid": 1}),
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
console.log(data);
},
failure: function (response) {
alert(response.d);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("error: ", jqXHR);
}
});
}
Это прекрасно работает как для GET , так и для POST . Однако, если я прокомментирую все это выше и использую Web.config и структурирую его так же, как файл Global.asax , примерно так:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Max-Age" value="1728000" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Authorization, Pragma, Cache-Control" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
Работает для получения GET , но не для POST . Опубликовать ошибку в консоли, сказав:
Доступ к XMLHttpRequest в 'http://localhost:62755/TutorialService.svc/Tutorial/1' от источника' http://localhost' заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: не имеет статуса HTTP ok.
Чего мне не хватает?