Как отправить куки-файлы на стороне клиента (javascript) на сервер (node.js) с помощью Microsoft Direct Framework API Direct Framework? [Дубликат]

Поскольку люди, похоже, обращаются к этому вопросу, когда речь заходит об ошибках компоновщика, я собираюсь добавить это здесь.

Одной из возможных причин ошибок компоновщика с GCC 5.2.0 является то, что новая библиотека libstdc ++ ABI теперь выбран по умолчанию.

Если вы получаете ошибки компоновщика о неопределенных ссылках на символы, которые включают типы в пространстве имен std :: __ cxx11 или теге [abi: cxx11], то это, вероятно, указывает на то, что вы пытаетесь связать файлы объектов, которые были скомпилированы с различными значениями для макроса _GLIBCXX_USE_CXX11_ABI. Это обычно происходит при подключении к сторонней библиотеке, которая была скомпилирована с более старой версией GCC. Если сторонняя библиотека не может быть перестроена с новым ABI, вам нужно будет перекомпилировать свой код со старым ABI.

. Если вы вдруг получите ошибки компоновщика при переключении на GCC после 5.1.0 это было бы замечательно.

78
задан Corey Ogburn 14 February 2014 в 17:28
поделиться

9 ответов

В Chrome предваряется запрос на поиск заголовков CORS . Если запрос является приемлемым, он отправит реальный запрос. Если вы выполняете этот кросс-домен, вам просто придется иметь дело с ним или найти способ сделать запрос не междоменным. Вот почему ошибка jQuery была закрыта как не исправлена.

В отличие от простых запросов (см. Выше), запросы «предполетного» сначала отправляют HTTP-запрос методом OPTIONS к ресурсу в другом домене, чтобы определить, фактический запрос безопасен для отправки. Запросы межсайтовых запросов предваряются таким образом, поскольку они могут иметь последствия для пользовательских данных. В частности, запрос предваряется, если:

  • Он использует методы, отличные от GET, HEAD или POST. Кроме того, если POST используется для отправки данных запроса с помощью Content-Type, отличного от application / x-www-form-urlencoded, multipart / form-data или text / plain, например. если запрос POST отправляет XML-полезную нагрузку на сервер с помощью приложения / xml или text / xml, тогда запрос предваряется.
  • Он устанавливает пользовательские заголовки в запросе (например, запрос использует заголовок, например X -PINGOTHER)
108
ответ дан Dark Falcon 1 September 2018 в 07:40
поделиться

Если возможно передать параметры через обычный 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'];
}
1
ответ дан Aidin 1 September 2018 в 07:40
поделиться

Я столкнулся с очень похожим вопросом. Я потратил почти полдня, чтобы понять, почему все работает правильно в Firefox и не удается в Chrome. В моем случае это было из-за дублированных (или, возможно, ошибочных) полей в моем заголовке запроса.

0
ответ дан Andrew Tatomyr 1 September 2018 в 07:40
поделиться

Как ответил на @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(); 
        }
    }
0
ответ дан Community 1 September 2018 в 07:40
поделиться

Исходя из того факта, что запрос не отправлен на порт по умолчанию 80/443, этот вызов Ajax автоматически считается запросом ресурса кросс-исходного кода (CORS), что означает, что запрос автоматически выдает запрос OPTIONS который проверяет заголовки CORS на стороне сервера / сервлета.

Это происходит, даже если вы установите

crossOrigin: false;

или даже если вы его опустите.

Причина проста в том, что localhost != localhost:57124. Попробуйте отправить его только на localhost без порта - он не сработает, потому что запрошенная цель не будет доступна, однако обратите внимание, что если имена доменов равны, запрос отправляется без запроса OPTIONS до POST.

10
ответ дан Dropout 1 September 2018 в 07:40
поделиться

С помощью 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 , и аксиомы работали отлично.

0
ответ дан Evhz 1 September 2018 в 07:40
поделиться

В моем случае я вызываю API, размещенный AWS (API Gateway). Ошибка произошла, когда я попытался вызвать API из домена, отличного от собственного домена API. Поскольку я являюсь владельцем API, я включил CORS для тестовой среды, как описано в Amazon Documentation .

При создании этой ошибки не произойдет, так как запрос и api будут находиться в одном домене.

Надеюсь, это поможет!

1
ответ дан gbonesso 1 September 2018 в 07:40
поделиться

Я согласен с Кевином Б, в отчете об ошибке говорится все. Похоже, вы пытаетесь сделать междоменные аякс-вызовы. Если вы не знакомы с той же политикой происхождения, вы можете начать здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript .

Если это не предназначено для межзадачного вызова ajax, попробуйте сделать свой целевой URL-адрес и посмотреть, не исчезла ли проблема. Если вы действительно отчаянно смотрите на JSONP, но будьте осторожны, хаос скрывается. На самом деле мы не можем сделать больше, чтобы помочь вам.

2
ответ дан jgitter 1 September 2018 в 07:40
поделиться

«предварительно запрограммированные» запросы сначала отправляют HTTP-запрос методом OPTIONS к ресурсу в другом домене, чтобы определить, безопасно ли отправлять этот запрос. Запросы межсайтовых

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

0
ответ дан Noorullah 1 September 2018 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: