Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Кроссдоменный AJAX существует или нет? / 10 сообщений из 10, страница 1 из 1
10.12.2015, 19:29
    #39125291
janco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
Здравствуйте. Надо выполнить кроссдоменный аякс 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
10.12.2015, 22:33
    #39125394
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
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
10.12.2015, 22:48
    #39125398
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
...
Рейтинг: 0 / 0
12.12.2015, 17:03
    #39126429
janco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
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
12.12.2015, 18:49
    #39126472
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
janco, я Вам процитировал ту часть, где всё объясняется. Что Вам там не понятно?

Хотите спецификацию, пожалуйста: Cross-Origin Resource Sharing .
...
Рейтинг: 0 / 0
12.12.2015, 21:43
    #39126525
janco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
За ссылочку спасибо. Что мне неясно, объясняю: почему браузер отправляет 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
12.12.2015, 21:55
    #39126526
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
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
12.12.2015, 21:59
    #39126528
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
И кстати ссылка на спецификацию есть в статье, не ленитесь читать :)
...
Рейтинг: 0 / 0
13.12.2015, 18:02
    #39126754
janco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
Т.е. Вы намекаете, что Content-type может быть другим? Ну, этого не исключаю, явно не задаю, спасибо.
...
Рейтинг: 0 / 0
25.08.2016, 13:16
    #39297796
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссдоменный AJAX существует или нет?
Как решили данную проблему ?
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Кроссдоменный AJAX существует или нет? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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