Tag Archives: JavaScript

Problema de Entity Body incluso em HTTP DELETE Request

Problema que detectei em algumas applicações que estamos desenvolvendo com Extjs+Jquery: Na máquina de entrega o request do tipo DELETE funcionava tranquilamente, na máquina de produção hospedada no Rackspace quebrava. Como a máquina de entrega estava dentro da nossa rede, suspeitei logo da conexão, firewall e essas coisas.

O @rponte me deu a dica desse post que ele encontrou com o mesmo tipo de problema. Nunca tinha percebido que a spec HTTP nem proibe e nem recomenda corpo em DELETE. Não faz muito sentido enviar corpo realmente em DELETE, mas até aí tudo bem.

Para completar, o Extjs já previa esse problema e o JsonWriter possui uma propriedade chamada “encodeDelete” para você explicitamente definir que não quer corpo em DELETE, por default já vem assim.

No console do firebug eu utilizava o $.ajax e o Ext.Ajax diretamente com a mesma url para enviar DELETE e funcionava, mas na aplicação não funcionava. Conversando com o pessoal da rede eles me disseram que trocaram o firewall recentemente e observando o log a chamada sequer passava por lá, ou seja, provavelmente ele já rejeita qualquer conexão DELETE com body.

Fui analizar o código do Extjs e ele enviava um body, a diferença é que era vazio, mas ia. Fiz um hack para destruir qualquer parametro quando a conexão fosse para o DELETE e consertou, como pode ver no código abaixo:


Link caso não consiga ver no seu reader.

Typically chemist’s shop can sale to you with discreet treatments for various health problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a very much complicated question. Matters, like “coupons for viagra“, are united numerous types of health problems. If you need to take prescription medications, ask your pharmacist to check your testosterone levels before. Sometimes the treatment options may include erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile disfunction drugs like Viagra without a formula is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.

Eval is Evil Again

Já escrevi sobre “Eval is Evil” há um tempo, mas é sempre bom lembrar. Meu problema com Eval no js é mais de hábito, basta um eval maroto no meio do código para daqui a pouco você travar o Fofox com tanta chamada.

Uma forma simples de evitar Eval é usar o JSON.parse nativo ou com lib, mas em algumas situações isso não é possível. Basta lembrar da spec de js que define:

“An ECMAScript object is an unordered collection of properties each with zero or more attributes…”

Essa coleção funciona como um Array, portanto basta pegar a propriedade pelo index nessa coleção e executar a operação necessária como no exemplo abaixo:


Link caso não consiga ver no seu reader.

Typically chemist’s shop can sale to you with discreet treatments for various health problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a much complicated matter. Matters, like “coupons for viagra“, are connected numerous types of soundness problems. If you need to take recipe medications, ask your dispenser to check your testosterone levels before. Sometimes the treatment options may switch on erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile dysfunction drugs like Viagra without a prescription is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.

Problemas com Object.prototype no Javascript

Surgiu a necessidade de fazer um “monkey patch” no Object para incluir o método try como funciona no rails.

Com Javascript temos a possibilidade de modificar os métodos dos objetos como “métodos de classes” (inclusive built-in)  e reaproveitar esse código na extensão dos componentes. A herança tradicional e oficial é usando o “.prototype”, assim eu poderia fazer simplesmente [usando node.js para testar]:

Link caso não consiga ver no seu reader.

O problema disso, no client-side principalmente, é que não podemos alterar o Object.prototype diretamente porque provoca vários problemas, de cara estourou as funções anônimas criados a partir de closures. Uma solução bacana seria usar a definição de Object.defineProperty, mas nem todos os navegadores já implementam isso e ainda teríamos que definir a versão do js na tag script para 1.8, ou seja, inviável.


Link caso não consiga ver no seu reader.

Um workaround para resolver esse problema foi usando a função Object.create com a dica do Douglas Crockford:


Link caso não consiga ver no seu reader.

Não é uma solução elegante, sempre que eu for criar um objeto literal eu tenho que usar Object.create(args), mas por enquanto foi o melhor crossbrowser possível.
Se você tiver uma idéia melhor, comente aí que estou precisando 🙂

Typically chemist’s shop can sale to you with discreet treatments for various health problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a extremely complicated problem. Matters, like “coupons for viagra“, are connected numerous types of health problems. If you need to take prescription medications, ask your dispenser to check your testosterone levels before. Sometimes the treatment options may include erectile malfunction remedies or a suction device that helps get an hard-on. Keep in mind web-site which is ready to sell erectile malfunction drugs like Viagra without a formula is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.