POST, идущий как ОПЦИИ в узле firebase js http request [duplicate]

Связанный .lib-файл связан с .dll

У меня была такая же проблема. Скажем, у меня есть проекты MyProject и TestProject. Я эффективно связал файл lib для MyProject с TestProject. Однако этот файл lib был создан, так как была построена DLL для MyProject. Кроме того, я не содержал исходный код для всех методов в MyProject, но только доступ к точкам входа DLL.

Чтобы решить проблему, я построил MyProject как LIB и связал TestProject с этим .lib-файлом (скопируйте вложенный файл .lib в папку TestProject). Затем я смогу снова создать MyProject как DLL. Он компилируется, поскольку lib, с которым связан TestProject, содержит код для всех методов в классах MyProject.

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 31 August 2018 в 22:53
поделиться

Если возможно передать параметры через обычный 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 31 August 2018 в 22:53
поделиться

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

0
ответ дан Andrew Tatomyr 31 August 2018 в 22:53
поделиться

Как ответил на @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 31 August 2018 в 22:53
поделиться

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

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

crossOrigin: false;

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

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

10
ответ дан Dropout 31 August 2018 в 22:53
поделиться

С помощью 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 31 August 2018 в 22:53
поделиться

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

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

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

1
ответ дан gbonesso 31 August 2018 в 22:53
поделиться

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

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

2
ответ дан jgitter 31 August 2018 в 22:53
поделиться

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

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

0
ответ дан Noorullah 31 August 2018 в 22:53
поделиться
Другие вопросы по тегам:

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