Я хочу разрешить пользователю добавлять Javascript в разделы моего сайта.
Я столкнулся с двумя проблемами. Во-первых, если я не укажу 'jsonp' для dataType, запрос jQuery.ajax () вернет ошибку:
Доступ к запрещенному коду URI запрещен: 1012
Считаются ли мои запросы междоменными, потому что мой основной рабочий файл хранится локально, но извлекает данные с сервера в другом месте?
Так хорошо, я обновляю вызов, чтобы он теперь выглядел так:
$.ajax({
url: myServerUrl,
type: "GET",
dataType: "jsonp", // considered a cross domain Ajax request if not specified
username: myUsername,
password: myPassword,
success: function(result)
{
// success handling
},
error: function(req, status, errThrown){
// error handling
}
})
Поскольку мне нужно использовать обычную аутентификацию, я передаю имя пользователя / пароль, но если я отслеживаю запрос, я не вижу его и, кроме того, сервер отправляет ответ об ошибке, поскольку он не имеет ожидаемой информации.
Кроме того, потому что у меня установлено jsonp
, beforeSend
не будет вызвано.
Как передать учетные данные, используя обычную аутентификацию для этого запроса?
Я думаю, вам придется добавить какой-нибудь прокси-сервер. JSONP — это просто особый способ использования тега скрипта. Таким образом, он не позволяет устанавливать произвольные заголовки. И, конечно же, вы не можете сделать кросс-происхождение XHR.
Коротко говоря, вы не можете этого сделать. Ваши подозрения верны, потому что вы локальны, а эти файлы удалены, вы не можете получить к ним доступ, вы заблокированы политикой того же происхождения. Обходным решением для этого является JSONP, но это действительно не похоже на вашу ситуацию...
JSONP работает по-другому, это запрос GET через включить, чтобы получить файл, поэтому вы не отправляете специальные заголовки или что-то еще.
Вам нужно будет проксировать запрос через сервер, на котором вы находитесь (домен, на котором выполняется этот скрипт), или другой вариант прокси, но переход от клиента к другому домену заблокирован, в основном из соображений безопасности.