powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Кроссдоменный AJAX существует или нет?
10 сообщений из 10, страница 1 из 1
Кроссдоменный AJAX существует или нет?
    #39125291
janco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Надо выполнить кроссдоменный аякс POST-запрос. Раньше где-то тут утверждали, что XMLHttpRequest может это делать в современных браузерах .
Однако при попытке это сделать в консоли вижу такую ошибку:
ChromiumXMLHttpRequest cannot load http://site2.com/scripts/script.php?u=aaa&cbf=_cbfc. Origin http://site1.com is not allowed by Access-Control-Allow-Origin.
В файле script.php пишу:
Код: php
1.
header("Access-Control-Allow-Origin: http://site1.com");


уже в самый верх переместил. Начал копать. Оказывается этот скрипт вообще и не пытается выполняться, как тогда вообще возможно заголовки отправить, если браузер их и не хочет получать? Отвечает, что не разрешено, но даже не спрашивал. Шлёт какой-то запрос OPTIONS в ответ получает 200ОК, но как если скрипт совсем не выполнялся?! Кто-нибудь может объяснить что происходит?
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39125394
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
janco, статью-то читать пробовали?

«Непростые» запросыПервый запрос называется «предзапрос» (английский термин «preflight»). Браузер делает его целиком по своей инициативе, из JavaScript мы о нём ничего не знаем, хотя можем увидеть в инструментах разработчика.

Этот запрос использует метод OPTIONS. Он не содержит тела и содержит название желаемого метода в заголовке Access-Control-Request-Method, а если добавлены особые заголовки, то и их тоже — в Access-Control-Request-Headers.

Его задача — спросить сервер, разрешает ли он использовать выбранный метод и заголовки.

На этот запрос сервер должен ответить статусом 200, без тела ответа, указав заголовки Access-Control-Allow-Method: метод и, при необходимости, Access-Control-Allow-Headers: разрешённые заголовки.
https://learn.javascript.ru/xhr-crossdomain#непростые-запросы
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39125398
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39126429
janco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAjanco, статью-то читать пробовали?

«Непростые» запросыПервый запрос называется «предзапрос» (английский термин «preflight»). Браузер делает его целиком по своей инициативе, из JavaScript мы о нём ничего не знаем, хотя можем увидеть в инструментах разработчика.

Этот запрос использует метод OPTIONS. Он не содержит тела и содержит название желаемого метода в заголовке Access-Control-Request-Method, а если добавлены особые заголовки, то и их тоже — в Access-Control-Request-Headers.

Его задача — спросить сервер, разрешает ли он использовать выбранный метод и заголовки.

На этот запрос сервер должен ответить статусом 200, без тела ответа, указав заголовки Access-Control-Allow-Method: метод и, при необходимости, Access-Control-Allow-Headers: разрешённые заголовки.
https://learn.javascript.ru/xhr-crossdomain#непростые-запросы
Спасибо за ответ. Конечно. Но не могу понять, зачем Вы меня направляете на "непростые" запросы? Я же явно поставил задачу: отправить POST-запрос, который является простым , как в этой статье написано.
learn.javascript.ruЧтобы пресечь любые недопонимания, браузер использует предзапрос в случаях, когда:

Если метод — не GET / POST / HEAD.
Если заголовок Content-Type имеет значение отличное от application/x-www-form-urlencoded, multipart/form-data или text/plain, например application/xml.
Если устанавливаются другие HTTP-заголовки, кроме Accept, Accept-Language, Content-Language.
У меня метод POST. Следовательно, зачем браузер прётся на сервер с запросом OPTIONS - я так и не понял. Может он это делает при любом методе, но тогда то что написано в статье - враньё. Тогда хотелось бы почитать "настоящую" документацию.
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39126472
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
janco, я Вам процитировал ту часть, где всё объясняется. Что Вам там не понятно?

Хотите спецификацию, пожалуйста: Cross-Origin Resource Sharing .
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39126525
janco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За ссылочку спасибо. Что мне неясно, объясняю: почему браузер отправляет preflight-запрос для простого метода POST?
Как ещё яснее поставить вопрос?
Цитирую спецификацию:
W3User agents can discover via a preflight request whether a cross-origin resource is prepared to accept requests, using a non-simple method, from a given origin.
Из чего следует, что preflight запросы используются для выяснения, готов ли сервер принимать НЕПРОСТЫЕ запросы. Или я неправильно перевёл? Выяснять, примет ли сервер запрос POST спецификация не требует, а браузер это делает.
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39126526
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jancoЗа ссылочку спасибо. Что мне неясно, объясняю: почему браузер отправляет preflight-запрос для простого метода POST?
В статье же черным по белому написано:

Чтобы пресечь любые недопонимания, браузер использует предзапрос в случаях, когда:

- Если метод — не GET / POST / HEAD.
- Если заголовок Content-Type имеет значение отличное от application/x-www-form-urlencoded, multipart/form-data или text/plain, например application/xml.
- Если устанавливаются другие HTTP-заголовки, кроме Accept, Accept-Language, Content-Language.

…Любое из условий выше ведёт к тому, что браузер cделает два HTTP-запроса.
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39126528
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати ссылка на спецификацию есть в статье, не ленитесь читать :)
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39126754
janco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. Вы намекаете, что Content-type может быть другим? Ну, этого не исключаю, явно не задаю, спасибо.
...
Рейтинг: 0 / 0
Кроссдоменный AJAX существует или нет?
    #39297796
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как решили данную проблему ?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Кроссдоменный AJAX существует или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]