Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
 Rest настройка CORS Access-Control-Allow-Origin  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 253
В классе унаследованный от %CSP.REST как правильно переопределить ClassMethod OnHandleCorsRequest
чтобы можно было делать Ajax запрос с внешнего источника?
31 окт 16, 13:13    [19841463]     Ответить | Цитировать Сообщить модератору
 Re: Rest настройка CORS Access-Control-Allow-Origin  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3041
Блог
Sabyrov.Talgat,

Overriding the OnHandleCorsRequest Method

17604579
31 окт 16, 13:59    [19841789]     Ответить | Цитировать Сообщить модератору
 Re: Rest настройка CORS Access-Control-Allow-Origin  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 253
servit,
В этой статье нет ответа на мой вопрос.
В методе OnHandleCorsRequest класса %CSP.REST я перепробовал все.
Но когда делаю запрос $http.get в AngularJs с внешнего источника мне выдает ошибку :
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
31 окт 16, 14:52    [19842158]     Ответить | Цитировать Сообщить модератору
 Re: Rest настройка CORS Access-Control-Allow-Origin  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3041
Блог
Sabyrov.Talgat
В методе OnHandleCorsRequest класса %CSP.REST я перепробовал все.
Что именно Вы перепробовали и на чём остановились?
eduard93 выше привёл ссылку на готовый код по поддержке CORS.

Sabyrov.Talgat
Но когда делаю запрос $http.get в AngularJs с внешнего источника мне выдает ошибку :
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Которая легко гуглится: Access-Control-Allow-Origin задайте "*".
31 окт 16, 15:29    [19842422]     Ответить | Цитировать Сообщить модератору
 Re: Rest настройка CORS Access-Control-Allow-Origin  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 253
servit,
Пробовал так.
ClassMethod OnHandleCorsRequest(pUrl As %StringAs %Status
{
  
Do ..SetResponseHeaderIfEmpty("Access-Control-Allow-Origin","*"
  
Do ..SetResponseHeaderIfEmpty("Access-Control-Allow-Credentials","true")
  
Do ..SetResponseHeaderIfEmpty("Access-Control-Allow-Methods","GET, PUT, POST, DELETE, OPTIONS")
  
Do ..SetResponseHeaderIfEmpty("Access-Control-Allow-Headers","Content-Type, Authorization, Accept-Language, X-Requested-With")
  
Quit ..HandleDefaultCorsRequest(pUrl)
}
Но все равно не дает, доступа на посторонний источник.
1 ноя 16, 07:02    [19844341]     Ответить | Цитировать Сообщить модератору
 Re: Rest настройка CORS Access-Control-Allow-Origin  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3041
Блог
Sabyrov.Talgat
Пробовал так.
<...>
Но все равно не дает, доступа на посторонний источник.
Доступа не даёт, потому что кроме переопределения обработчика OnHandleCorsRequest нужно ещё включить этот самый CORS, используя либо атрибут Cors либо параметр HandleCorsRequest, иначе OnHandleCorsRequest не вызовется (см. исходник метода ProcessCorsRequest).
Метод HandleDefaultCorsRequest здесь лишний. Посмотрите исходники %CSP.REST.cls.
Если у Вас версия Caché не поддерживающая CORS, то поступите как eduard93 в своём коде.
Чтобы удостовериться что Вы делаете всё правильно, проверяйте значения запроса/ответа через curl или ему подобный инструмент.
1 ноя 16, 09:15    [19844488]     Ответить | Цитировать Сообщить модератору
 Re: Rest настройка CORS Access-Control-Allow-Origin  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 253
servit,
Большое спасибо!
Просто нужно переопределить параметр HandleCorsRequest в классе %CSP.REST

Parameter HandleCorsRequest = "true";
1 ноя 16, 13:40    [19846037]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить