Получение установки cookie на различных доменах, с JavaScript или другим

Да, у меня есть doctype в web.xml

blockquote>

Удалите это из web.xml, и все должно быть хорошо. Допустимый сервлет 3.0 (Tomcat 7, JBoss AS 6/7, GlassFish 3 и т. Д.), Совместимый с web.xml, представлен ниже, без каких-либо :




    


Для сервлета 3.1 ( Tomcat 8, WildFly 8/9/10/11, GlassFish / Payara 4 и т. Д.), Он выглядит следующим образом:




    


Для сервлета 4.0 (Tomcat 9, WildFly 12, GlassFish / Payara 5 и т. Д. ), это выглядит следующим образом:




    


При использовании JSTL 1.1 или новее вам нужно убедиться, что ваш web.xml объявлен таким образом, что webapp работает, по крайней мере, с сервлета 2.4, иначе EL выражения не будут работать в webapp.

Если у вас еще есть сервлет 2.3 или старше в web.xml, даже если у вас уже есть сервлет 2.4 или более новый XSD, тогда он все равно будет вынужден для запуска в сервлетах 2.3 или более старых modus, в результате чего EL-выражения не срабатывают.

. Техническая причина: EL первоначально был частью JSTL 1.0 и недоступен в Servlet 2.3 / JSP 1.2 и старше. В JSTL 1.1 EL был удален из JSTL и интегрирован в JSP 2.0, который идет вместе с Servlet 2.4. Итак, если ваш web.xml объявлен для запуска webapp в Servlet 2.3 или более раннем модуле, JSP ожидает найти EL в библиотеке JSTL, но это, в свою очередь, потерпит неудачу, если это новая версия JSTL, лишенная EL.

См. также:

22
задан Luca Matteis 31 December 2008 в 05:20
поделиться

3 ответа

Вы могли ввести элемент сценария в ЗАГОЛОВОК документа с обратным вызовом, который передает cookie, в котором Вы нуждаетесь к любой функции, нуждается в нем.

Что-то как:

 <script type="text/javascript">
   var newfile=document.createElement('script');
   newfile.setAttribute("type","text/javascript");
   newfile.setAttribute("src", 'http://first.com/doAjax?getCookie&callback=passCookie');
   document.getElementsByTagName("head")[0].appendChild(newfile);
 </script>

И страница first.com/doAjax?getCookie мог сделать это:

     passCookie({'name':'mycookie', 'value':'myvalue'});
9
ответ дан Ryan Doherty 29 November 2019 в 05:58
поделиться

Поместите этот PHP-файл в first.com:

//readcookie.php    
echo $_COOKIE['cookiename'];

На second.com можно использовать этот JavaScript для получения значения:

function readCookieCallback()
{
   if ((this.readyState == 4) && (this.status == 200))
   {
     alert("the value of the cookie is: "+this.responseText);
   } 
   else if ((this.readyState == 4) && (this.status != 200))
   {
     //error...
   }
}


function buttonClickOrAnything()
{
  var refreshObject = new XMLHttpRequest();
  if (!refreshObject)
  {
    //IE6 or older
    try
    {
      refreshObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        refreshObject = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
        return;
      }
    }
  }
  refreshObject.onreadystatechange = readCookieCallback;
  refreshObject.open("GET", "http://www.first.com/readcookie.php");
  refreshObject.send();
}

С уважением, Robert

0
ответ дан 29 November 2019 в 05:58
поделиться

Для УСТАНОВКИ cookie можно изменить мой сценарий следующим образом:

Новый Сценарий PHP:

//writecookie.php
setcookie($_GET['c'], $_GET['v']);

И JavaScript:

function buttonClickOrAnything()
{
  var refreshObject = new XMLHttpRequest();
  if (!refreshObject)
  {
    //IE6 or older
    try
    {
      refreshObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        refreshObject = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
        return;
      }
    }
  }
  refreshObject.open("GET", "http://www.first.com/writecookie.php?c=cookiename&v=cookievalue");
  refreshObject.send();
}

Это должно работать над всеми браузерами.

-2
ответ дан 29 November 2019 в 05:58
поделиться
Другие вопросы по тегам:

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