SORU
10 HAZİRAN 2010, PERŞEMBE


HTTPS sayfalarda HTTP içeriği ile ilgili

Tamamen HTTPS, ama bazen ekran üzerinden erişilen bir site vardış içerikHTTP (RSS görüntüleri, esas yayınları). Kullanıcılarımızın büyük çoğunluğu da IE6 sıkışmış.

İdeal aşağıdakilerin her ikisini de yapmak istiyorum

  • Güvensiz içeriği hakkında IE uyarı mesajı daha az müdahaleci bir kişi, örneğin aşağıdaki gibi varsayılan bir simge görüntüleri değiştirerek göstereyim () önlemek
  • Sunmak yararlı bir şey için kullanıcılar yer görüntüleri bunu yapamazlar, aksi halde bakınız; eğer orada bir JS yapabilirim çalıştırmak için anlamaya görüntüleri yok yüklendiği ve yerine onlarla bir görüntü bizimki yerine harika olur.

İlk amaç mümkün değil, ama ikinci yeterli olabileceğini sanıyorum.

En kötü durum senaryosu olduğunu ayrıştırmak RSS beslemeleri ne zaman biz almak onları kapmak görüntüleri saklamak onları yerel olarak böylece kullanıcılar erişebilir bu şekilde onları, ama göründüğü gibi çok acı, çok yavaş gelişir.

CEVAP
15 HAZİRAN 2010, Salı


En kötü durum senaryosu sandığın kadar kötü değil.

Zaten RSS ayrıştırma, zaten görüntü URL. Resim http://otherdomain.com/someimage.jpg gibi bir URL olduğunu varsayalım. https://mydomain.com/imageserver?url=http://otherdomain.com/someimage.jpg&hash=abcdeafad Bu URL yeniden yazma. Bu şekilde, tarayıcı sorunlardan kurtulmak, böylece her zaman https üzerinden istekte.

Sonraki bölüm - aşağıdakileri yapar bir proxy sayfa veya bir sunucu uygulaması oluşturun

  1. Sorgu dizesi, url parametre okuma ve karma doğrulayın
  2. Sunucudan resim indir, proxy tarayıcıya geri
  3. İsteğe bağlı olarak, önbellek disk üzerindeki resim

Bu çözüm bazı avantajları vardır. Html oluşturma anında görüntü indirmek zorunda değilsin. Görüntüleri yerel olarak saklamak zorunda değilsin. Ayrıca, vatansız; url tüm bilgileri görüntüyü sunmak için gerekli içerir.

Son olarak, karma parametre güvenlik için; sadece sunucu uygulaması inşa var URL için görüntüleri hizmet etmek istiyorum. Url oluşturduğunuzda, md5(image_url secret_key) hesaplamak ve karma parametre olarak ekleyin. İstek servis yapmadan, karma ve yeniden geçildi ne karşılaştırın. Bu secret_key sadece sizin için bilinen bu yana, hiç kimse geçerli bir URL oluşturabilirsiniz.

Eğer java geliştiriyorsanız, Sunucu uygulaması kod sadece birkaç satır. Aşağıdaki kod, başka bir arka uç teknolojisi bağlantı noktası olmalıdır.

/*
targetURL is the url you get from RSS feeds
request and response are wrt to the browser
Assumes you have commons-io in your classpath
*/

protected void proxyResponse (String targetURL, HttpServletRequest request,
 HttpServletResponse response) throws IOException {
    GetMethod get = new GetMethod(targetURL);
    get.setFollowRedirects(true);    
    /*
     * Proxy the request headers from the browser to the target server
     */
    Enumeration headers = request.getHeaderNames();
    while(headers!=null && headers.hasMoreElements())
    {
        String headerName = (String)headers.nextElement();

        String headerValue = request.getHeader(headerName);

        if(headerValue != null)
        {
            get.addRequestHeader(headerName, headerValue);
        }            
    }        

    /*Make a request to the target server*/
    m_httpClient.executeMethod(get);
    /*
     * Set the status code
     */
    response.setStatus(get.getStatusCode());

    /*
     * proxy the response headers to the browser
     */
    Header responseHeaders[] = get.getResponseHeaders();
    for(int i=0; i<responseHeaders.length; i  )
    {
        String headerName = responseHeaders[i].getName();
        String headerValue = responseHeaders[i].getValue();

        if(headerValue != null)
        {
            response.addHeader(headerName, headerValue);
        }
    }

    /*
     * Proxy the response body to the browser
     */
    InputStream in = get.getResponseBodyAsStream();
    OutputStream out = response.getOutputStream();

    /*
     * If the server sends a 204 not-modified response, the InputStream will be null.
     */
    if (in !=null) {
        IOUtils.copy(in, out);
    }    
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • BuzzFeedVideo

    BuzzFeedVide

    10 AĞUSTOS 2011
  • SaMmM123

    SaMmM123

    3 Mayıs 2006