Я написал службу WCF, которая возвращает ответ JSON.Затем я создал HTML-страницу с некоторым кодом JavaScript для проверки функции.Когда я опубликовал сервис в промежуточной среде (в которой для эмуляции рабочей среды используется SSL), мне пришлось обновить файл web.config моей службы, чтобы он работал по протоколу HTTPS.Все выглядит нормально, когда я перехожу непосредственно к конечной точке .svc (страница службы отображается как в http и https), так и когда я вызываю службу в браузере (мне предлагается загрузить ответ JSON), однако, когда я меняю свою тестовую страницу науказав на версию https, я получаю сообщение об ошибке «Отказано в доступе».
Вот код раздела servicemodel моего файла конфигурации:
<system.serviceModel>
<services>
<service name="Services.PromotionCodeGeneration" behaviorConfiguration="md">
<endpoint address="" binding="webHttpBinding" contract="Services.IPromotionCodeGeneration" behaviorConfiguration="webHttp" bindingConfiguration="webBindingSecure"/>
<endpoint address="" binding="webHttpBinding" contract="Services.IPromotionCodeGeneration" behaviorConfiguration="webHttp" bindingConfiguration="webBinding"/>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="md">
<serviceMetadata httpsGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="webBindingSecure">
<security mode="Transport"/>
</binding>
<binding name="webBinding">
<security mode="None"></security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
Вот код моего тестастраница:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script>
function api_test() {
var url = "https://test.mydomain.com/Services/PromotionCodeGeneration.svc/contest/useremail@mydomain.com";
var client = new XMLHttpRequest();
client.open("GET", url, false);
client.setRequestHeader("Authentication-Key", "LK589-JIJO-SHG9-0987-65TG-HJKU-Y$GH");
client.send();
var responseText = client.responseText;
var result = JSON.parse(responseText);
document.writeln("Id: " + result.Id + "<br/>");
document.writeln("Code: " + result.Code + "<br/>");
var expiryDate = "";
if (result.Expires != null){expiryDate = result.Expires;}
document.writeln("Expires: " + expiryDate + "<br/>");
document.writeln("Status: " + result.Status + "<br/>");
}
</script>
</head>
<body onload="api_test();">
</body>
</html>
Я исследую проблему в течение 2 дней.Я нахожу, что многие люди говорят, что вы не можете использовать метод «XMLHttpRequest» в разных доменах, но он работает для меня через базовый http, поэтому мне трудно в это поверить.Я также пробовал МНОГИЕ различные предложения по конфигурации сервисной модели, однако ни один не работал для связи https.Кто-нибудь видит в моей конфигурации или на странице вызова что-нибудь, что вызывает ответ «Отказано в доступе» через https?
Любая помощь будет признательна.