<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Desarrollo web &#187; ajax</title>
	<atom:link href="http://www.proyecto-f.net/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.proyecto-f.net</link>
	<description>javascript, jquery, css, php y adobe premiere</description>
	<lastBuildDate>Tue, 13 Apr 2010 05:32:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Detectar petición ajax en PHP</title>
		<link>http://www.proyecto-f.net/2009/09/detectar-peticion-ajax-en-php/</link>
		<comments>http://www.proyecto-f.net/2009/09/detectar-peticion-ajax-en-php/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 09:05:42 +0000</pubDate>
		<dc:creator>flmn</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.proyecto-f.net/?p=784</guid>
		<description><![CDATA[Muchos programadores acostumbran a usar el mismo fichero PHP para peticiones estándar y peticiones ajax. El uso de un único script facilita el mantenimiento del código simplificando cualquier modificación que realicemos en un futuro además de aportar ventajas en el cacheo. 
Normalmente se añade un parámetro a GET o POST para identificar el tipo de [...]]]></description>
			<content:encoded><![CDATA[<p>Muchos programadores acostumbran a usar el mismo fichero PHP para peticiones estándar y peticiones ajax. El uso de un único script facilita el mantenimiento del código simplificando cualquier modificación que realicemos en un futuro además de aportar ventajas en el cacheo. </p>
<p>Normalmente se añade un parámetro a GET o POST para identificar el tipo de llamada, pero si hacemos uso de algún framework javascript podemos ahorrárnoslo y detectar la llamada así:</p>
<pre><code>
 if( !empty($_SERVER['HTTP_X_REQUESTED_WITH'])
     &#038;&#038; strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])
     == 'xmlhttprequest' ) {

      /* petición ajax */

 } else {

      /* no es una petición ajax.... */
 }
</code>
</pre>
<p>La variable HTTP_X_REQUESTED_WITH es totalmente dependiente de la librería javascript utilizada pero prácticamente todas (Prototype, jQuery, Mootools,YUI&#8230;) la envían.</p>
<p>Si por el contrario realizais las llamadas ajax &#8220;a mano&#8221; podéis añadir la cabecera necesaria de la siguiente manera:</p>
<div  style="width:420px;overflow:auto;">
<pre><code>
xmlHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
</code></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.proyecto-f.net/2009/09/detectar-peticion-ajax-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cross-domain ajax request</title>
		<link>http://www.proyecto-f.net/2009/07/cross-domain-ajax-request/</link>
		<comments>http://www.proyecto-f.net/2009/07/cross-domain-ajax-request/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 00:44:02 +0000</pubDate>
		<dc:creator>flmn</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[cross-domain]]></category>

		<guid isPermaLink="false">http://www.proyecto-f.net/?p=453</guid>
		<description><![CDATA[El standard XMLHttpRequest() definido por la W3C limita las llamadas javascript a nuestro propio dominio. Esto se definió así en su día por temas de seguridad y porque no parecía necesario realizar llamadas a webs externas.
Con los años, la evolución de las webs, popularización de apis publicas etc. Ha quedado demostrado que el segundo punto [...]]]></description>
			<content:encoded><![CDATA[<p>El standard XMLHttpRequest() definido por la W3C limita las llamadas javascript a nuestro propio dominio. Esto se definió así en su día por temas de seguridad y porque no parecía necesario realizar llamadas a webs externas.</p>
<p>Con los años, la evolución de las webs, popularización de apis publicas etc. Ha quedado demostrado que el segundo punto no era correcto. Visto esto la W3C se volvió a poner manos a la obra, modifico ligeramente el standard y a día de hoy ya podemos realizar llamadas ajax cross-domain con los últimos navegadores sin necesidad de alternativas <a title="cross-domain AJAX using CSS" href="http://nb.io/hacks/csshttprequest">rebuscadas</a>.<br />
<span id="more-453"></span><br />
Para mantener el filtro de seguridad ahora los distintos sites que deseen ser accesibles mediante llamadas ajax deberán incluir en las cabeceras http a que dominios dan acceso. Ejemplo:</p>
<pre>
&lt;?php header('Access-Control: allow &lt;?*&gt;'); ?&gt; //Permitir todos
&lt;?php header('Access-Control: deny &lt;?*&gt;');?&gt;  //Denegar todos
&lt;?php header('Access-Control: allow &lt;?ab.net&gt;');?&gt;
//Permitir solamente ab.net
</pre>
<p>En cuanto a la parte de javascript: chrome 2, safari 4 y firefox 3.5 siguen el standard e IE8 se ha inventado una función con otro nombre que hace exactamente lo mismo (para variar&#8230;). Ejemplo de el código javascript:</p>
<pre>
var url = "http://www.proyecto-f.net/";

if(XMLHttpRequest) {
  var request = new XMLHttpRequest();

  if("withCredentials" in request) {

      // Firefox 3.5 y compañia
      request.open('GET', url, true);
      request.onreadystatechange = handler;
      request.send();

  } else if (XDomainRequest) {

      // IE8
      var xdr = new XDomainRequest();
      xdr.open("get", url);
      xdr.send();

  } else {

      // Otros navegadores
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.proyecto-f.net/2009/07/cross-domain-ajax-request/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

