HTTP yöntemi SİL kullanarak veri erişimi ile sığınakta sorun

2 Cevap php

Ben HTTP yönergesi SİL kullanarak bir komut dosyası erişirken PHP ham isteği bilgi erişim bir sorun yaşıyorum. Ben Ajax kullanarak bir komut dosyası erişen bir JS ön uç kullanıyorum. Bu script aslında ben geliştiriyorum bir sığınakta API parçasıdır.

Bu örnekte uç noktasıdır:

http://api.site.com/session

Bu uç daha sonra API istekleri için kullanılabilecek bir kimlik doğrulama belirteci oluşturmak için kullanılır. HTTP Temel Kimlik değiştirilmiş bir sürümü ile birlikte bu adresten üzerinde GET yöntemini kullanarak müşteri için bir erişim belirteci sağlayacaktır. Süresi dolmadan bu belirteci sonra hizmet ile diğer tüm etkileşimleri dahil edilmelidir.

Bir belirteç oluşturulur sonra, müşteri hizmetini gönderir 'Accept' başlığı ile belirtilen bir biçimde geri istemciye geçirilir; Bu durumda 'application / json'. Başarısı üzerine bir HTTP 200 Tamam durum kodu ile yanıt verir. Başarısızlık halinde, bu HTTP 401 Yetkilendirme Gerekli kodu kullanarak bir istisna atar.

Bir oturumu silmek, ya da 'oturumu' istediğinizde Şimdi, aynı URL'yi vurdu, ancak HTTP ile directive silme. Bu son nokta erişimi doğrulamak için, müşteri daha önce onlar sonlandırmak istediğiniz belirteci sağlayarak doğrulanmış edildi kanıtlamak zorundadır.

Onlar 'günlüğe' ise, jeton ve oturum sonlandırılır ve hizmet aksi halde, HTTP 204 İçerik Yok durum kodu ile cevap vermelidir, yine 401 istisna ile karşılaşacaksınız.

Şimdi, ben yaşıyorum sorun çıkarmadan oturumları ile. DELETE yönergesi ile Ajax kullanarak, ben istek hizmetini vurur kere ben kurdum herhangi parametrelerine erişmek için görünmüyor olabilir. Bu durumda, ben 'belirteç' başlıklı parametre arıyorum.

Firebug kullanarak ham istek başlıklarına bakmak ve ben gönderilen belirteci boyutu ile 'Content-Length' başlığı değişiklikleri fark. Bu, bu veriler aslında sunucusuna gönderiliyor bana anlatıyor.

Soru Ben parametre bilgileri nasıl cehennem erişmek için, PHP kullanarak, nedir? Bu bir POST değil veya GET isteği, bu yüzden normalde PHP olduğu gibi erişemez. Parametreler, isteğin içeriği kısmı içinde bulunmaktadır.

Ben $ _SERVER bakarak denedim, ama bu beni başlıkları sınırlı miktarını gösterir. Ben sadece başlıkları, hala bana daha detaylı bilgi verir, '() apache_request_headers' denedik ama. Ben bile 'file_get_contents (' php :/ / stdin ') çalıştı;' ve ben hiçbir şey olsun.

Nasıl Ham bir HTTP isteği içerik bölümünü erişebilir?

Uzun yazı için özür dilerim, ama ben çok fazla bilgi anladım çok az daha iyidir. :)

2 Cevap

Ben HTTP SİL kötüye düşünüyorum. Kaynak isteği URI tarafından işaret: Normalde sunucu üzerinde bir kaynak silmek için bir istek olarak kullanılmalıdır. Bir sorgu parametresi olarak erişim belirteci kodlamak olabilir, ama bu nasıl kullanılması gerektiğini SİL değil. örneğin, bir istek:

DELETE /somescript.php?token=XYZ123

SHOULD sunucudan 'somescript.php' dosyayı silmek için bir istek olarak tedavi edilebilir.

Sen böyle şeyler yapmanın olağan yöntem bir POST isteği, kullanmak için sisteminizi yeniden gerekir. POST işleyicisi komut oturumu silmek ve oluşturduğunuz olabilecek çerezleri unset uygun başlıkları ile cevap verebilirsiniz.

PUT ile geçti parametreleri erişmek ve DELETE için, php 'giriş' akışı, örneğin ayrıştırmak zorunda:

parse_str(file_get_contents('php://input'), $arguments);

Umut olur.