internet-explorer cookies privacy p3p

Cookie bloqueada/no guardada en IFRAME en Internet Explorer



internet-explorer cookies (22)

Para cualquiera que intente que la Política Compacta P3P trabaje con contenido estático:

Es solamente posible si usted es capaz de enviar las cabeceras de respuesta de servidor personalizados con el contenido estático.

Para una explicación más detallada, vea mi respuesta aquí: Establecer código P3P en HTML

Tengo dos sitios web, digamos que son example.com y anotherexample.net . En anotherexample.net/page.html , tengo un IFRAME SRC="http://example.com/someform.asp" . Ese IFRAME muestra un formulario para que el usuario lo complete y envíe a http://example.com/process.asp . Cuando abro el formulario (" someform.asp ") en su propia ventana del navegador, todo funciona bien. Sin embargo, cuando carga someform.asp como un IFRAME en IE 6 o IE 7, las cookies de example.com no se guardan. En Firefox este problema no aparece.

Para propósitos de prueba, he creado una configuración similar en http://newmoon.wz.cz/test/page.php .

example.com utiliza sesiones basadas en cookies (y no hay nada que pueda hacer al respecto), así que sin las cookies, process.asp no se ejecutará. ¿Cómo fuerzo a IE a guardar esas cookies?

Resultados de la detección del tráfico HTTP: en la respuesta GET /someform.asp, hay un encabezado Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY válido por sesión (por ejemplo, Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY ), pero a petición POST /process.asp, no hay un encabezado de Cookie en absoluto.

Edit3: algunos scripts AJAX + en el servidor son aparentemente capaces de eludir el problema, pero se parece mucho a un error, además de que abre un nuevo conjunto de agujeros de seguridad . No quiero que mis aplicaciones utilicen una combinación de error + agujero de seguridad solo porque es fácil.

Edición: la política P3P fue la causa raíz , la explicación completa a continuación.


Cualquiera que tenga este problema en node.js.

Luego agregue este módulo p3p y habilite este módulo en el middleware.

npm install p3p

Estoy usando Express, así que lo agrego en app.js

Primero requiere ese módulo en app.js

var express = require(''express''); var app = express(); var p3p = require(''p3p'');

entonces utilízalo como middleware

app.use(p3p(p3p.recommended));

Agregará encabezados p3p en el objeto res. No hay necesidad de hacer nada extra.

Obtendrá más información en:

https://github.com/troygoode/node-p3p


Estaba investigando este problema con respecto al cierre de sesión a través de los Servicios de Control de Acceso de Azure, y no pude conectar cabezas y colas de nada.

Luego, tropecé con esta publicación https://blogs.msdn.microsoft.com/ieinternals/2011/03/10/beware-cookie-sharing-in-cross-zone-scenarios/

En resumen, IE no comparte cookies a través de las zonas (por ejemplo, Internet vs. sitios de confianza).

Por lo tanto, si su página de destino y html de IFrame están en el P3P de una zona diferente, no ayudará con nada.


Este es un gran tema sobre el tema, sin embargo, encontré que un detalle importante (que era esencial al menos en mi caso) que no se publicó aquí ni en ningún otro lugar (pido disculpas si me lo perdí) fue que la línea P3P debe ser pasó en el encabezado de CADA archivo enviado desde el servidor de terceros, incluso los archivos que no configuran o utilizan las cookies, como archivos o imágenes de Javascript. De lo contrario se bloquearán las cookies. Tengo más información sobre esto en una publicación aquí: http://posheika.net/?p=110


Esto está enterrado en los comentarios de otras respuestas, pero casi lo pierdo, así que parece que merece su propia respuesta.

Para revisar: para que IE acepte cookies de terceros, necesita servir sus archivos con un encabezado http llamado p3p en el formato:

CP="my compact p3p policy"

PERO, p3p está prácticamente muerto como estándar en este punto y puede hacer que IE funcione sin necesidad de invertir tiempo y recursos legales para crear una política real de p3p. Esto se debe a que si el encabezado de su política compacta p3p no es válido, IE realmente lo considera como una buena política y acepta cookies de terceros. Así que puedes usar un encabezado p3p como este

CP="This site does not have a p3p policy."

Opcionalmente, puede incluir un enlace a una página que explique por qué no tiene una política p3p, como hacen Google y Facebook (apuntan aquí: https://support.google.com/accounts/answer/151657 y aquí: https://www.facebook.com/help/327993273962160/ ).

Finalmente, es importante tener en cuenta que todos los archivos servidos desde el sitio de terceros deben tener el encabezado p3p, no solo el que configura la cookie, por lo que es posible que no pueda hacer esto simplemente en su PHP, asp.net, etc. código. Probablemente sea mejor configurarlo en el nivel del servidor web (es decir, en IIS o Apache).


Esto finalmente funcionó para mí (después de un montón de apuro y generar algunas políticas utilizando el generador de políticas de IBM). Puede descargar el generador de políticas aquí: softpedia.com/get/Security/Security-Related/…

Ya no pude descargar el generador desde el sitio web oficial de IBM.

Creé estos archivos en la carpeta raíz de mi aplicación web

/index.php /w3c/policy.html (Human readable format) /w3c/p3p.xml /w3c/policy.p3p

  1. Index.php: Simplemente envíe un encabezado adicional:

header(''P3P: policyref="/w3c/p3p.xml", CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV DEM"'');

  1. Contenido de p3p.xml

<META> <POLICY-REFERENCES> <POLICY-REF about="/w3c/policy.p3p#App"> <INCLUDE>/</INCLUDE> <COOKIE-INCLUDE/> </POLICY-REF> </POLICY-REFERENCES> </META>

  1. Contenido de mi archivo policy.html

<html> <head> <STYLE type="text/css"> title { color: #3333FF} </STYLE> <title>Privacy Statement for YOUR COMPANY NAME</title> </head> <body> <h1 class="title">Privacy Policy</h1> <!-- "About Us" section of privacy policy --> <h2>About Us</h2> <p>This is a privacy policy for YOUR COMPANY NAME. Our homepage on the Web is located at <a href="YOURWEBSITE"> YOURWEBSITE</a>. The full text of our privacy policy is available on the Web at <a href="ABSOLUTE URL OF THIS FILE"> ABSOLUTE URL OF THIS FILE</a> This policy does not tell users where they can go to exercise their opt-in or opt-out options. <p>We invite you to contact us if you have questions about this policy. You may contact us by mail at the following address: <pre>FIRSTNAME LASTNAME YOUR ADDRESS HERE </pre> <p>You may contact us by e-mail at <a href="mailto:[email protected]"> [email protected]</a>. You may call us at TELEPHONENUMBER. <!-- "Privacy Seals" section of privacy policy --> <h2>Dispute Resolution and Privacy Seals</h2> <p>We have the following privacy seals and/or dispute resolution mechanisms. If you think we have not followed our privacy policy in some way, they can help you resolve your concern. <ul> <li> <b>Dispute</b>: Contact us for further information </ul> <!-- "Additional information" section of privacy policy --> <h2>Additional Information</h2> <p> This policy is valid for 1 day from the time that it is loaded by a client. </p> <!-- "Data Collection" section of privacy policy --> <h2>Data Collection</h2> <p>P3P policies declare the data they collect in groups (also referred to as "statements"). This policy contains 1 data group. <hr width="50%" align="center"> <h3>Group "App control data"</h3> <p>We collect the following information: <ul> <li>HTTP cookies</li> </ul> <p>This data will be used for the following purposes:</p> <ul> <li>Completion and support of the current activity.</li> <li>Web site and system administration.</li> <li>Research and development.</li> <li>Historical preservation.</li> <li>Other purposes<p>Control Flow of the application</p></li> </ul> <p>This data will be used by ourselves and our agents. <p>The data in this group has been marked as non-identifiable. This means that there is no reasonable way for the site to identify the individual person this data was collected from. <p>The following explanation is provided for why this data is collected:</p> <blockquote>This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</blockquote> <!-- "Use of Cookies" section of privacy policy --> <hr width="50%" align="center"> <h2>Cookies</h2> <p>Cookies are a technology which can be used to provide you with tailored information from a Web site. A cookie is an element of data that a Web site can send to your browser, which may then store it on your system. You can set your browser to notify you when you receive a cookie, giving you the chance to decide whether to accept it. <p>Our site makes use of cookies. Cookies are used for the following purposes: <ul> <li>Site administration <li>Completing the user''s current activity <li>Research and development <li>Other (Control Flow of the application) </ul> <!-- "Compact Policy Explanation" section of privacy policy --> <hr width="50%" align="center"> <h2>Compact Policy Summary</h2> <p>The compact policy which corresponds to this policy is: <pre> CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV" </pre> <p>The following table explains the meaning of each field in the compact policy. <center><table width="80%" border="1" cols="2"> <tr><td align="center" valign="top" width="20%"><b>Field</b></td><td align="center" valign="top" width="80%"><b>Meaning</b></td></tr> <tr><td align="left" valign="top" width="20%"><tt>CP=</tt></td> <td align="left" valign="top" width="80%">This is the compact policy header; it indicates that what follows is a P3P compact policy.</td></tr> <tr><td align="left" valign="top" width="20%"><tt>ALL</tt></td> <td align="left" valign="top" width="80%"> Access to all collected information is available. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>DSP</tt></td> <td align="left" valign="top" width="80%"> The policy contains at least one dispute-resolution mechanism. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>NID</tt></td> <td align="left" valign="top" width="80%"> The information collected is not personally identifiable. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>CURa</tt></td> <td align="left" valign="top" width="80%"> The data is used for completion of the current activity. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>ADMa</tt></td> <td align="left" valign="top" width="80%"> The data is used for site administration. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>DEVa</tt></td> <td align="left" valign="top" width="80%"> The data is used for research and development. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>HISa</tt></td> <td align="left" valign="top" width="80%"> The data is used for historical archival purposes. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>OTPa</tt></td> <td align="left" valign="top" width="80%"> The data is used for other purposes. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>OUR</tt></td> <td align="left" valign="top" width="80%"> The data is given to ourselves and our agents. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>NOR</tt></td> <td align="left" valign="top" width="80%"> The data is not kept beyond the current transaction. </td></tr> <tr><td align="left" valign="top" width="20%"><tt>NAV</tt></td> <td align="left" valign="top" width="80%"> Navigation and clickstream data is collected. </td></tr> </table></center> <p>The compact policy is sent by the Web server along with the cookies it describes. For more information, see the P3P deployment guide at <a href="http://www.w3.org/TR/p3pdeployment">http://www.w3.org/TR/p3pdeployment</a>. <!-- "Policy Evaluation" section of privacy policy --> <hr width="50%" align="center"> <h2>Policy Evaluation</h2> <p>Microsoft Internet Explorer 6 will evaluate this policy''s compact policy whenever it is used with a cookie. The actions IE will take depend on what privacy level the user has selected in their browser (Low, Medium, Medium High, or High; the default is Medium. In addition, IE will examine whether the cookie''s policy is considered satisfactory or unsatisfactory, whether the cookie is a session cookie or a persistent cookie, and whether the cookie is used in a first-party or third-party context. This section will attempt to evaluate this policy''s compact policy against Microsoft''s stated behavior for IE6. <p><b>Note:</b> this evaluation is currently experimental and should not be considered a substitute for testing with a real Web browser. <p><b>Satisfactory policy</b>: this compact policy is considered <em>satisfactory</em> according to the rules defined by Internet Explorer 6. IE6 will accept cookies accompanied by this policy under the High, Medium High, Medium, Low, and Accept All Cookies settings. </body></html>

  1. Contenido de policy.p3p

<?xml version="1.0"?> <POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1"> <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM --> <!-- Expiry information for this policy --> <EXPIRY max-age="86400"/> <POLICY name="App" discuri="ABSOLUTE URL TO policy.html" xml:lang="de"> <!-- Description of the entity making this policy statement. --> <ENTITY> <DATA-GROUP> <DATA ref="#business.name">COMPANY NAME</DATA> <DATA ref="#business.contact-info.online.email">[email protected]</DATA> <DATA ref="#business.contact-info.online.uri">YOURWEBSITE</DATA> <DATA ref="#business.contact-info.telecom.telephone.number">YOURPHONENUMBER</DATA> <DATA ref="#business.contact-info.postal.organization">FIRSTNAME LASTNAME</DATA> <DATA ref="#business.contact-info.postal.street">STREET</DATA> <DATA ref="#business.contact-info.postal.city">CITY</DATA> <DATA ref="#business.contact-info.postal.stateprov">STAGE</DATA> <DATA ref="#business.contact-info.postal.postalcode">POSTALCODE</DATA> <DATA ref="#business.contact-info.postal.country">Germany</DATA> </DATA-GROUP> </ENTITY> <!-- Disclosure --> <ACCESS><all/></ACCESS> <!-- Disputes --> <DISPUTES-GROUP> <DISPUTES resolution-type="service" service="YOURWEBSITE CONTACT FORM" short-description="Dispute"> <LONG-DESCRIPTION>Contact us for further information</LONG-DESCRIPTION> <!-- No remedies specified --> </DISPUTES> </DISPUTES-GROUP> <!-- Statement for group "App control data" --> <STATEMENT> <EXTENSION optional="yes"> <GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="App control data"/> </EXTENSION> <!-- Consequence --> <CONSEQUENCE> This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</CONSEQUENCE> <!-- Data in this statement is marked as being non-identifiable --> <NON-IDENTIFIABLE/> <!-- Use (purpose) --> <PURPOSE><admin/><current/><develop/><historical/><other-purpose>Control Flow of the application</other-purpose></PURPOSE> <!-- Recipients --> <RECIPIENT><ours/></RECIPIENT> <!-- Retention --> <RETENTION><no-retention/></RETENTION> <!-- Base dataschema elements. --> <DATA-GROUP> <DATA ref="#dynamic.cookies"><CATEGORIES><navigation/></CATEGORIES></DATA> </DATA-GROUP> </STATEMENT> <!-- End of policy --> </POLICY> </POLICIES>


He implementado una política P3P completa anteriormente, pero no quería volver a pasar por la molestia de un nuevo proyecto en el que estaba trabajando. Encontré este enlace útil para una solución simple al problema, solo teniendo que especificar una política P3P compacta mínima de "CAO PSA OUR":

http://blog.sweetxml.org/2007/10/minimal-p3p-compact-policy-suggestion.html

El artículo cita un enlace (ahora roto) a un artículo de Microsoft KB. La política hizo el truco para mí!


He pasado gran parte de mi día investigando esta cuestión del P3P y siento la necesidad de compartir lo que he descubierto.

Me he dado cuenta de que el concepto P3P está muy desactualizado y parece que solo se usa / aplica realmente Internet Explorer (IE).

La explicación más simple es: IE quiere que defina un encabezado P3P si está utilizando cookies.

Esta es una buena idea y, afortunadamente, la mayoría de las veces, no proporcionar este encabezado no causará ningún problema (lea las advertencias del navegador). A menos que su sitio web / aplicación web se cargue en otro sitio web utilizando un (i) Frame. Aquí es donde IE se convierte en un dolor masivo en el ***. No le permitirá establecer una cookie a menos que se establezca el encabezado P3P.

Sabiendo esto quería encontrar una respuesta a las siguientes dos preguntas:

  1. ¿A quien le importa? En otras palabras, ¿puedo ser demandado si pongo la palabra "Papa" en el encabezado?
  2. ¿Qué hacen otras empresas?

Mis hallazgos son:

  1. A nadie le importa. No puedo encontrar un solo documento que sugiera que esta tecnología tiene algún peso legal. Durante mi investigación no encontré un solo país en todo el mundo que haya adoptado una ley que le impida poner la palabra "Papa" en el encabezado de P3P
  2. Tanto Google como Facebook colocan un enlace en el campo del encabezado P3P que se refiere a una página que describe por qué no tienen un encabezado P3P.

El concepto nació en 2002 y me desconcierta que este concepto obsoleto y legalmente no implementado todavía sea obligatorio para los desarrolladores dentro de IE. Si este encabezado no tiene ninguna ramificación legal, este encabezado debe ignorarse (o, alternativamente, generar una advertencia o notificación en la consola). No impuesta! Ahora estoy obligado a poner una línea en mi código (y enviar un encabezado al cliente) que no hace absolutamente nada.

En resumen, para mantener feliz a IE, agregue la siguiente línea a su código PHP (los demás idiomas deberían parecer similares)

header(''P3P: CP="Potato"'');

Problema resuelto, y IE está contento con esta papa.


Lo tengo para funcionar, pero la solución es un poco compleja, así que tengan paciencia.

Qué esta pasando

Tal como está, Internet Explorer otorga un menor nivel de confianza a las páginas de IFRAME (IE llama a este contenido de "terceros"). Si la página dentro de IFRAME no tiene una Política de privacidad, sus cookies están bloqueadas (lo que se indica con el icono del ojo en la barra de estado, al hacer clic en ella, se muestra una lista de las URL bloqueadas).

the evil eye http://stuff.piskvor.org/cookies_blocked_MSIE_eye.png

En este caso, cuando se bloquean las cookies, el identificador de sesión no se envía y el script de destino emite un error de "sesión no encontrada".

(He intentado colocar el identificador de sesión en el formulario y cargarlo desde las variables POST. Esto hubiera funcionado , pero por razones políticas no pude hacerlo).

Es posible hacer que la página dentro de IFRAME sea más confiable: si la página interna envía un encabezado P3P con una política de privacidad que es aceptable para IE, se aceptarán las cookies .

Cómo resolverlo

Crear una política p3p

Un buen punto de partida es el tutorial de W3C . Lo revisé, descargué el Editor de Políticas de Privacidad de IBM y allí creé una representación de la política de privacidad y le di un nombre para hacer referencia a ella (aquí estaba la policy1 ).

NOTA : en este punto, realmente debe averiguar si su sitio tiene una política de privacidad y, de no ser así, crearla, ya sea que recopile datos de los usuarios, qué tipo de datos, qué hace con ellos, quién tiene acceso a ellos, Necesitas encontrar esta información y pensar en ella. Solo pegar unas cuantas etiquetas no lo cortará. Este paso no se puede realizar únicamente en software y puede ser muy político (por ejemplo, "¿debemos vender nuestras estadísticas de clics?").

(por ejemplo, "el sitio es operado por ACME Ltd., utiliza identificadores anónimos por sesión para su operación, recopila datos de usuarios solo si se permite explícitamente y solo para los siguientes fines, los datos se almacenan solo el tiempo necesario, solo nuestra compañía Tiene acceso a ella, etc. etc. ").

(Al editar con esta herramienta, es posible ver los errores / omisiones en la política. También es muy útil la pestaña "Política HTML": en la parte inferior, tiene una "Evaluación de la política": una comprobación rápida de la política que se bloqueará por la configuración predeterminada de IE)

El Editor exporta a un archivo .p3p, que es una representación XML de la política anterior. Además, puede exportar una "versión compacta" de esta política.

Enlace a la política

Luego se necesitaba un archivo de referencia de políticas ( http://example.com/w3c/p3p.xml ) (un índice de políticas de privacidad que usa el sitio):

<META> <POLICY-REFERENCES> <POLICY-REF about="/w3c/example-com.p3p#policy1"> <INCLUDE>/</INCLUDE> <COOKIE-INCLUDE/> </POLICY-REF> </POLICY-REFERENCES> </META>

El <INCLUDE> muestra todos los URI que usarán esta política (en mi caso, todo el sitio). El archivo de políticas que he exportado desde el Editor se subió a http://example.com/w3c/example-com.p3p

Enviar el encabezado compacto con respuestas

He configurado el servidor web en example.com para que envíe el encabezado compacto con respuestas, como esta:

HTTP/1.1 200 OK P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST" // ... other headers and content

policyref es un URI relativo al archivo de referencia de políticas (que a su vez hace referencia a las políticas de privacidad), CP es la representación compacta de las políticas. Tenga en cuenta que la combinación de encabezados P3P en el ejemplo puede no ser aplicable en su sitio web específico; ¡sus encabezados P3P DEBEN representar sinceramente su propia política de privacidad!

¡Lucro!

En esta configuración, Evil Eye no aparece, las cookies se guardan incluso en IFRAME y la aplicación funciona.

Editar: Qué NO hacer, a menos que te guste defenderte de demandas

Varias personas han sugerido que "solo pegue algunas etiquetas en el encabezado de su P3P, hasta que Evil Eye se rinda".

¡Las etiquetas no son solo un montón de bits, tienen significados del mundo real y su uso le da responsabilidades del mundo real !

Por ejemplo, fingir que nunca recopila datos de usuarios puede hacer feliz al navegador, pero si realmente recopila datos de usuarios, el P3P está en conflicto con la realidad. Simple y llanamente, usted está mintiendo a propósito a sus usuarios , y eso podría ser un comportamiento criminal en algunos países. Al igual que en "ir a la cárcel, no recoja $ 200".

Algunos ejemplos ( vea p3pwriter para el conjunto completo de etiquetas ):

  • NOI : "El sitio web no recopila datos identificados". (tan pronto como haya alguna personalización, inicio de sesión o recopilación de datos (¿***** Analytics, alguien?), debe reconocerlo en su P3P)
  • STP : la información se retiene para cumplir con el propósito establecido. Esto requiere que la información se descarte lo antes posible. Los sitios DEBEN tener una política de retención que establezca una tabla de tiempo de destrucción. La política de retención DEBE incluirse o vincularse a la política de privacidad legible para el sitio ". (Por lo tanto, si envía STP pero no tiene una política de retención, es posible que esté cometiendo un fraude. ¿Qué tan genial es eso? En absoluto.)

No soy abogado, pero no estoy dispuesto a acudir a los tribunales para ver si el encabezado de P3P es legalmente vinculante o si puede prometer algo a sus usuarios sin estar realmente dispuesto a cumplir sus promesas.


Pude hacer desaparecer el mal de ojo simplemente agregando este pequeño encabezado al sitio en el IFrame (solución PHP):

header(''P3P: CP="NOI ADM DEV COM NAV OUR STP"'');

Recuerde presionar Ctrl + F5 para volver a cargar su sitio o Explorer aún puede mostrar el mal de ojo, a pesar de que está funcionando bien. Esta es probablemente la razón principal por la que tuve tantos problemas para que funcionara.

Ningún archivo de política fue necesario en absoluto.

Edición: encontré una entrada de blog agradable que explica el problema con las cookies en IFrames. También tiene una solución rápida en el código C #: marcos, páginas ASPX y cookies rechazadas


Sé que es un poco tarde para poner mi contribución en este tema, pero perdí tantas horas que tal vez esta respuesta ayude a alguien.

Estaba intentando llamar a una cookie de terceros en mi sitio y, por supuesto, no funcionaba en Internet Explorer 10, incluso en un nivel de seguridad bajo ... no me preguntes por qué. En el iframe estaba llamando a read_cookie.php (echo $ _COOKIE) con ajax.

Y no sé por qué fui incapaz de establecer la política de P3P para resolver el problema ...

Durante mi búsqueda vi algo sobre cómo hacer funcionar la cookie en JSON. Ni siquiera lo intento porque pensé que si la cookie no pasa a través de un iframe, no pasará más a través de una matriz ...

Adivina qué, lo hace! Por lo tanto, si inicia la codificación de su cookie y luego la descodifica después de su solicitud de ajax, ¡la obtendrá!

Tal vez haya algo que me perdí y si lo hice, todas mis disculpas, pero nunca vi algo tan estúpido. Bloquee las cookies de terceros por seguridad, ¿por qué no, pero déjelas pasar si están codificadas? ¿Dónde está la seguridad ahora?

Espero que esta publicación ayude a alguien y otra vez, si me perdí algo y soy tonta, ¡por favor educame!


Si alguien está buscando la línea Apache; Nosotros usamos este.

Conjunto de encabezado P3P "CP = /" Gracias IE8 / ""

Realmente no importó en qué configuramos el valor de CP, siempre y cuando exista el encabezado P3P.


También puede combinar los archivos p3p.xml y policy.xml como tales:

/home/ubuntu/sites/shared/w3c/p3p.xml

<META xmlns="http://www.w3.org/2002/01/P3Pv1"> <POLICY-REFERENCES> <POLICY-REF about="#policy1"> <INCLUDE>/</INCLUDE> <COOKIE-INCLUDE/> </POLICY-REF> </POLICY-REFERENCES> <POLICIES> <POLICY discuri="" name="policy1"> <ENTITY> <DATA-GROUP> <DATA ref="#business.name"></DATA> <DATA ref="#business.contact-info.online.email"></DATA> </DATA-GROUP> </ENTITY> <ACCESS> <nonident/> </ACCESS> <!-- if the site has a dispute resolution procedure that it follows, a DISPUTES-GROUP should be included here --> <STATEMENT> <PURPOSE> <current/> <admin/> <develop/> </PURPOSE> <RECIPIENT> <ours/> </RECIPIENT> <RETENTION> <indefinitely/> </RETENTION> <DATA-GROUP> <DATA ref="#dynamic.clickstream"/> <DATA ref="#dynamic.http"/> </DATA-GROUP> </STATEMENT> </POLICY> </POLICIES> </META>

Encontré que la forma más fácil de agregar un encabezado es proxy a través de Apache y usar mod_headers, como tal:

<VirtualHost *:80> ServerName mydomain.com DocumentRoot /home/ubuntu/sites/shared/w3c/ ProxyRequests off ProxyPass /w3c/ ! ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ProxyPreserveHost on Header add p3p ''P3P:policyref="/w3c/p3p.xml", CP="NID DSP ALL COR"'' </VirtualHost>

Por lo tanto, hacemos un proxy de todas las solicitudes excepto las de /w3c/p3p.xml a nuestro servidor de aplicaciones.

Puedes probarlo todo con el validador W3C


También tuve este problema, pensé en publicar el código que usé en mi proyecto MVC2. Tenga cuidado cuando en el ciclo de vida de la página agregue en el encabezado o obtendrá una HttpException "El servidor no puede agregar el encabezado después de que se hayan enviado los encabezados HTTP ". Utilicé un ActionFilterAttribute personalizado en el método OnActionExecuting (llamado antes de que se ejecute la acción).

/// <summary> /// Privacy Preferences Project (P3P) serve a compact policy (a "p3p" HTTP header) for all requests /// P3P provides a standard way for Web sites to communicate about their practices around the collection, /// use, and distribution of personal information. It''s a machine-readable privacy policy that can be /// automatically fetched and viewed by users, and it can be tailored to fit your company''s specific policies. /// </summary> /// <remarks> /// More info http://www.oreillynet.com/lpt/a/1554 /// </remarks> public class P3PAttribute : ActionFilterAttribute { /// <summary> /// On Action Executing add a compact policy "p3p" HTTP header /// </summary> /// <param name="filterContext"></param> public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpContext.Current.Response.AddHeader("p3p","CP=/"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT/""); base.OnActionExecuting(filterContext); } }

Ejemplo de uso:

[P3P] public class HomeController : Controller { public ActionResult Index() { ViewData["Message"] = "Welcome!"; return View(); } public ActionResult About() { return View(); } }



Una cosa posible es agregar el dominio a los sitios permitidos en herramientas -> opciones de internet -> privacidad -> sitios: somedomain.com -> permitir -> Aceptar.


Una solución que no he visto mencionada aquí, es el uso del almacenamiento de sesión en lugar de las cookies. Por supuesto, esto puede que no se ajuste a los requisitos de todos, pero para algunos casos es una solución fácil.


Esta publicación proporciona algunos comentarios sobre P3P y una solución abreviada que reduce los problemas con IE7 e IE8.


Si posee el dominio que necesita ser incrustado , entonces podría, antes de llamar a la página que incluye el IFrame, redirigir a ese dominio, lo que creará la cookie y la redirigirá nuevamente, como se explica aquí: http://www.mendoweb.be/blog/internet-explorer-safari-third-party-cookie-problem/

Esto funcionará para Internet Explorer, pero también para Safari (porque Safari también bloquea las cookies de terceros).



Una mejor solución sería hacer una llamada Ajax dentro del iframe a la página que obtendría / establecería cookies ...