Я использую JQuery Ajax для запроса API, используя метод POST.
Мои страницы будут просматриваться на мобильных устройствах, поэтому мы сохраняем их очень легкими, а также используем http в качестве протокола.
Лишь немногие из наших API передают токены, которые необходимо было бы защитить, поэтому мы планировали использовать протокол https.
Мы предоставили конечные точки http и https в нашей службе WCF. Также убедитесь, что разрешен кросс-скриптинг, добавив следующую конфигурацию в наш web.config
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS"/>
<add name="Access-Control-Allow-Headers" value="*"/>
</customHeaders>
</httpProtocol>
В контракте WCF Operation я проверил заголовок OPTIONS, который нужно вернуть, установив
выше заголовков. Запрос никогда не достигает операции WCF. Сам браузер останавливает запрос в соответствии с политикой Same Origin.
Я наблюдал за работой getJSON, но было несколько ограничений, например, он не позволяет передавать метод POST и сложные объекты.
Что меня удивляет, так это то, что я видел реализации, где это разрешено. Ниже приведен пример того, что работает в кросс-сценарии.
Пример:
function onSuccess(data) {
console.log("in on success");
console.log(data);
$.ajax({
url: closure_compiler_service,
type: 'POST',
dataType: 'json',
data: 'js_code=' + $("#eval").val() + "&output_info=compiled_code&output_format=json&compilation_level=WHITESPACE_ONLY&formatting=pretty_print",
success: function (jscode) {
//do something...
},
error: function () {
console.log("Error from Closure compile");
},
async: false
});
}
Я что-то упускаю, чтобы обойти ту же политику происхождения.