Одинаковая политика происхождения для поддержки между http и https - PullRequest
1 голос
/ 14 декабря 2011

Я использую 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
});
}

Я что-то упускаю, чтобы обойти ту же политику происхождения.

...