Отладка доступа к доступу-свел-аворигину с Chrome/Webkit

StackOverflow https://stackoverflow.com/questions/4753970

Вопрос

Я пытаюсь использовать Обмен ресурсами кроссоригина с контролем Access-Allow-Origin и связанными заголовками. Я работаю над Firefox, но Chrome дает мне ошибки разрешения, которые выглядят так:

XMLHttpRequest cannot load <remote>. Origin <local> is not allowed by Access-Control-Allow-Origin.

Сетевой инспектор показывает запрос, но нет ответа (и не включает в себя запрос на предварительную службу параметров). Я проверил выход запроса, используя Curl и воспроизводив все заголовки, и то, что я вижу, соответствует тому, что подразумевает спецификация (и, опять же, то, что принимает Firefox). Я в недоумении, как отладить это дальше - есть ли уловки для просмотра сетевой деятельности на более низком уровне, чем обычно предоставляет Chrome? Информация о том, как Chrome интерпретирует CORS запрашивает иначе, чем Firefox?

Это было полезно?

Решение

Я подозреваю, что вы видите, является предварительным полетом, за которым следует неудачный запрос Chrome из -за ошибки. Это объяснило бы, почему все работает в Firefox, но не в Chrome.

Вы отправляете какие -либо пользовательские заголовки в своем запросе? В Webkit есть ошибка, где пройдут запросы Get с пользовательскими заголовками (ошибка здесь: http://code.google.com/p/chromium/issues/detail?id=57836) Я также заметил, что Chrome иногда ожидает заголовка типа контента в списке управляющих доступа, даже если тип контента является простым заголовком.

Кроме того, вы упоминаете, что сетевой инспектор не включает в себя предварительные возможности? Какой сетевой инспектор вы используете? Я бы порекомендовал использовать Wireshark, поскольку это дает вам подробную информацию о фактическом сетевом трафике, который не предоставляет инспектор Chrome (например, Wireshark будет регистрировать запросы на предварительные полете).

Некоторые другие советы по отладки:

Попробуйте запрос в Safari. Это поможет сузить его до ошибки Chrome или ошибки Webkit.

Время, когда я видел ошибку, которую вы видите (Wireshark показывает запрос, но не ответ), это связано с тем, что мой сервер не включает заголовок с образованием доступа к доступу, который не включен, потому что Chrome является ' T отправляя заголовок происхождения (см. ошибку выше). В вашей сетевой трассировке вы видите заголовок происхождения в запросе? У вас есть контроль над сервером, и если да, то получает ли он заголовок происхождения?

Трудно отлаживать фактическую проблему без более подробной информации. Если у вас все еще есть проблемы, можете ли вы публиковать здесь заголовки запроса/ответа?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top