Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.
Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.
Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.
blockquote>. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.
В Chrome предваряется запрос на поиск заголовков CORS . Если запрос является приемлемым, он отправит реальный запрос. Если вы выполняете этот кросс-домен, вам просто придется иметь дело с ним или найти способ сделать запрос не междоменным. Вот почему ошибка jQuery была закрыта как не исправлена.
В отличие от простых запросов (см. Выше), запросы «предполетного» сначала отправляют HTTP-запрос методом OPTIONS к ресурсу в другом домене, чтобы определить, фактический запрос безопасен для отправки. Запросы межсайтовых запросов предваряются таким образом, поскольку они могут иметь последствия для пользовательских данных. В частности, запрос предваряется, если:
blockquote>
- Он использует методы, отличные от GET, HEAD или POST. Кроме того, если POST используется для отправки данных запроса с помощью Content-Type, отличного от application / x-www-form-urlencoded, multipart / form-data или text / plain, например. если запрос POST отправляет XML-полезную нагрузку на сервер с помощью приложения / xml или text / xml, тогда запрос предваряется.
- Он устанавливает пользовательские заголовки в запросе (например, запрос использует заголовок, например X -PINGOTHER)
Если возможно передать параметры через обычный GET / POST с другим именем, и пусть ваш код на стороне сервера обработает его.
У меня была аналогичная проблема с моим собственным прокси-сервером, чтобы обойти CORS, и я получил та же ошибка POST-> OPTION в Chrome. Это был заголовок Authorization
в моем случае ("x-li-format"
и "X-UserName"
здесь в вашем случае.) В итоге я передал его в фиктивном формате (например, AuthorizatinJack
в GET), и я изменил код для своего прокси-сервера превратите это в заголовок при совершении вызова в пункт назначения. Здесь он находится в PHP:
if (isset($_GET['AuthorizationJack'])) {
$request_headers[] = "Authorization: Basic ".$_GET['AuthorizationJack'];
}
Я столкнулся с очень похожим вопросом. Я потратил почти полдня, чтобы понять, почему все работает правильно в Firefox и не удается в Chrome. В моем случае это было из-за дублированных (или, возможно, ошибочных) полей в моем заголовке запроса.
Как ответил на @Dark Falcon, я просто обратился к нему .
В моем случае я использую node.js server и создавая сеанс, если он не существует. Поскольку метод OPTIONS не содержит в нем сведений о сеансе, он создал новый сеанс для каждого запроса метода POST.
Итак, в моей программе приложения для создания сеанса, если не существует, я просто добавила проверку, чтобы проверить, является ли метод OPTIONS
, и если да, просто пропустите часть создания сеанса:
app.use(function(req, res, next) {
if (req.method !== "OPTIONS") {
if (req.session && req.session.id) {
// Session exists
next();
}else{
// Create session
next();
}
} else {
// If request method is OPTIONS, just skip this part and move to the next method.
next();
}
}
Исходя из того факта, что запрос не отправлен на порт по умолчанию 80/443, этот вызов Ajax автоматически считается запросом ресурса кросс-исходного кода (CORS), что означает, что запрос автоматически выдает запрос OPTIONS который проверяет заголовки CORS на стороне сервера / сервлета.
Это происходит, даже если вы установите
crossOrigin: false;
или даже если вы его опустите.
Причина проста в том, что localhost != localhost:57124
. Попробуйте отправить его только на localhost
без порта - он не сработает, потому что запрошенная цель не будет доступна, однако обратите внимание, что если имена доменов равны, запрос отправляется без запроса OPTIONS до POST.
С помощью axios
axios.get( url,
{ headers: {"Content-Type": "application/json"} } ).then( res => {
if(res.data.error) {
} else {
doAnything( res.data )
}
}).catch(function (error) {
doAnythingError(error)
});
я использовал эту проблему, используя fetch , и аксиомы работали отлично.
В моем случае я вызываю API, размещенный AWS (API Gateway). Ошибка произошла, когда я попытался вызвать API из домена, отличного от собственного домена API. Поскольку я являюсь владельцем API, я включил CORS для тестовой среды, как описано в Amazon Documentation .
При создании этой ошибки не произойдет, так как запрос и api будут находиться в одном домене.
Надеюсь, это поможет!
Я согласен с Кевином Б, в отчете об ошибке говорится все. Похоже, вы пытаетесь сделать междоменные аякс-вызовы. Если вы не знакомы с той же политикой происхождения, вы можете начать здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript .
Если это не предназначено для межзадачного вызова ajax, попробуйте сделать свой целевой URL-адрес и посмотреть, не исчезла ли проблема. Если вы действительно отчаянно смотрите на JSONP, но будьте осторожны, хаос скрывается. На самом деле мы не можем сделать больше, чтобы помочь вам.
«предварительно запрограммированные» запросы сначала отправляют HTTP-запрос методом OPTIONS к ресурсу в другом домене, чтобы определить, безопасно ли отправлять этот запрос. Запросы межсайтовых
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS