2019-02-21
zelder
2019-08-07
21/02
2019

Кросс-доменные аякс запросы.


Ситуация
Некий сайт "https://server.site" предоставляет javascript скрипты - модуль для внешних сайтов.
Через этот модуль на внешнем сайте ("https://client.site") идут запросы на серверный сайт.
Задача
Научить общаться скрипты с внешнего сайта (https://client.site) с сайтом сервером (https://server.site).
JQuery запрос
Клиентский сайт (https://client.site) загрузил необходимые скрипты с серверного сайта (https://server.site), и в этих скриптах идет взаимодействие с серверным сайтом. Например:
$.ajax({
url: "https://server.site" + cmdName,
data: postData,
type: "POST",
crossDomain: true,
cache: false,
success: function (d) {
// doing
},
error: function (x, t, e) {
// on error
}
});

Проблема кросс-доменного запроса
Браузер запретит кросс-доменные запросы, если сервер не вернет необходимый заголовок в ответе.
Ошибка вида:
Access to XMLHttpRequest at 'https://server.site/cmd' from origin 'https://client.site' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Решение:
Необходимо вернуть заголовок ответа с серверного сайта (https://server.site), собственно, что и написано в ошибке.
_context.Response.ContentType = "application/json";
_context.Response.AppendHeader("Access-Control-Allow-Origin", "*"); //! заголовок для КроссДоменного запроса (даем добро, в этом примере всем доменам)


.