Güvenli bir .net sunucusuyla iletişim kuran bir PhoneGap uygulama geliştiriyorum ayarlamak reddetti. Sorun şu ki, herhangi bir istekle herhangi bir Çerez boyunca geçemiyorum (W3C).Çerez Başlık: güvensiz başlığı "Cookie"
Bu yapıyorum budur (farz olduğunu "kullanıcı adı" ve "şifre" iş). Bu noktada
var token;
$.ajax({
url: "https://server.com/AuthService/api/account/login",
crossDomain: true,
type: 'post',
async: false,
data: {
username: "username",
password: "password"
}
}).done(function(response) {
token = response.securityToken;
success = true;
});
ben sonraki tüm isteklerini doğrulamak için kullanabileceğiniz bir kimlik doğrulama kodu var. Bu yüzden sunucuya başka bir istek yapmak belirteci ...
$.ajax({
url: "https://server.com/Service/api/search?query=" + query,
headers: { Cookie: 'auth=' + token },
crossDomain: true,
withCredentials: true,
type: 'POST',
async: false,
data: ' ' //because we don't want our request to be 0 bytes (the server is picky)
}).done(function(data) {
result = data;
});
Krom sadece diyor kullanarak: Reddedildi (W3C spec yapışan olan) güvensiz başlığı "Cookie" ayarlamak için. Uygulama, üstbilgi ayarlamamış ve bunun sonucu olarak 401'lerin yetkilendirme çerezi gönderilmemesi nedeniyle istenmemektedir. Kurabiye başlığını (veya tamamen bu konuda gitmek için başka bir yol) PhoneGap bu yıkmak ve etkisiz hale getirmenin bir yolu var mı:
Sorum şudur? Yetkilendirme üstbilgisi kullanmanın da bir seçenek olduğunu biliyorum, ancak sunucuya sınırlı erişimim var (bunu desteklemiyor) ve daha hızlı bir çözüm olmasını umuyordum.
Bonus sorusu: AuthService çağrısı, aygıtta bir httpOnly çerezi de ayarlamalıdır, ancak bunu yapmıyor (bunun bir çapraz etki alanı isteğidir). Bu varsayımı düzeltir miyim? Sunucu tarafında yanlış bir şey var mı?
Teşekkürler!
teşekkürler. İhtiyaçlarım için iyi çalışan bir Yetkilendirme üstbilgisini seçmeyi bitirdim! – evancohen
Teşekkür ederim, 'Set-Cookie' ile' Secure' ve 'httponly' özniteliklerine yanıt başlığı ile mücadele ediyordum, ardından doğru' Cookie'yi takip isteklerine geri gönderiyordum. Aralarında bir "nginx" proxy kullanıyorum ve uygun "Access-Control" başlıklarını ayarlamak için Angular '$ http' ayarını yapmamı sağladı. – sampoh