Раніше кроссдоменний ajax запити були неможливі, за винятком запити в офрмате jsonp. Сьогодні з появою технології CORS можна реалізувати кроссдоменний ajax запит, в тому числі і з повною підтримкою об'єкта XMLHttpRequest.
Браузери дозволяють зробити це використовуючи протокол Cross-Origin Resource Sharing або CORS
CORS передбачає обов'язкову відправку заголовка запиту до сервера.
Сервер повинен повернути таку відповідь
Браузер здійснить перевірку запиту і в разі успішної перевірка поверне об'єкт для роботи або завершиться невдачею.
CORS підтримує запити POST і GET. Інші типи підтримуються не всіма браузерами.
Firefox 3.5+, Safari 4+ і Chrome підтримують інші типи запитів, в той час як Ie 8 не підтримує інші типи запитів.
Якщо нам, наприклад, потрібен запит типу DELETE, потрібно відправити запит із зазначенням наступних заголовків:
А у відповідь відправити наступні заголовки відповіді:
«Передпольотної запит» до сервера дозволяє робити наступні кросбраузерності запити протягом періоду, вказане в заголовку відповіді Access-Control-Max-Age.
Практичний приклад застосування кроссдоменного ajax
У відповідь сервер обов'язково повинен повернути заголовок
Зараз навряд чи більшість використовує цей стандартний код. Простіше зробити це на jQUuery, так як в jQuery 1.5:
Для даного прикладу можна використовувати следуюший php код:
Всі способи ісползованія кроссдоменного ajax:
- postMessage
- JSONP
- CORS
- document.domain methods
- window.name Transport
- Server-side proxy
- CRAZY IFRAME STUFF
- flash