我正在尝试在我的应用程序中使用Ajax身份验证,我似乎已经让它工作,除了firefox似乎没有在后续请求的"cookie"请求标头中向服务器发送正确的jessionid,而chrome这样做就好了.这是登录功能:
$.ajaxSetup({
xhrFields: {
withCredentials : true
}
})
function sudoLogin(callback){
$.ajax({
url : HOST + "/ProperApp/j_spring_security_check",
type : "POST",
data : $("#login").serialize(),
dataType: 'json',
async : false,
success: function(result) {
if (result.login) {
callback(true);
} else {
callback(false);
}
}
})
}
Run Code Online (Sandbox Code Playgroud)
在firefox的响应中,我可以看到正在设置的cookie,并调用成功回调:
Set-Cookie JSESSIONID=81235e7ff741e941c1e078afee5c; Path=/ProperApp; HttpOnly
Run Code Online (Sandbox Code Playgroud)
但是,在后续请求中,例如此请求,cookie不会被发送:
function getUserDeets(callback){
$.ajax({
url : HOST+ "/ProperApp/userData",
type : "GET",
async : false,
dataType : 'json',
xhrFields: {
withCredentials: true
},
success : function(data){
callback(data);
}
})
}
$('#submitLogin').click(function(){
sudoLogin(function(loggedIn){
if(loggedIn){ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用CSS和SVG创建一个简单的动画:旋转齿轮.动画在Chrome中完美运行,但不适用于Firefox.以下是行动中的代码:http://jsfiddle.net/fL8Qn/
齿轮是SVG文件中的路径:
<div class="svg">
<svg x="0px" y="0px" width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<title>PDP</title>
<text x="44" y="120" class="gear_text">PDP</text>
<g transform="translate(50%, 50%)">
<path id="gear1" class="gear go-clockwise" x="0px" y="0px" d="m91.63252,0l-4.16735,23.73752l0.01604,0.01606c-5.09374,0.83228 -10.02215,2.16622 -14.72963,3.9428l0,-0.01584l-15.46727,-18.48038l-14.53742,8.39871l8.25439,22.63163l0.03211,0.01585c-3.9412,3.23531 -7.55353,6.86028 -10.78684,10.8031l-0.01604,-0.04816l-22.63164,-8.25463l-8.39871,14.53743l18.48035,15.48333c-1.77354,4.70347 -3.09585,9.62447 -3.92695,14.71362l-0.01604,-0.01586l-23.73753,4.16734l0,16.79736l23.73753,4.16735l0.01604,-0.01587c0.83109,5.08915 2.15341,10.01014 3.92695,14.71381l-18.48035,15.48312l8.39871,14.53743l22.63164,-8.25444l0.01604,-0.04832c3.23331,3.94261 6.84564,7.56799 10.78684,10.80287l-0.03211,0.0159l-8.25439,22.63168l14.53742,8.39873l15.46727,-18.48027l0,-0.01582c4.70748,1.77637 9.63589,3.11047 14.72963,3.94278l-0.01604,0.01587l4.16735,23.73772l16.78132,0l4.16733,-23.73772l-0.01603,-0.01587c5.09294,-0.83009 10.02274,-2.15297 14.72985,-3.92696l15.4831,18.48047l14.53743,-8.39871l-8.27046,-22.63173c3.93234,-3.22687 7.54289,-6.83942 10.771,-10.7708l22.64757,8.25439l8.38263,-14.53741l-18.4642,-15.48308c1.77402,-4.70432 3.11153,-9.62388 3.94283,-14.71384l23.73775,-4.15126l0,-16.79738l-23.73775,-4.16735c-0.83148,-5.08432 -2.17067,-9.99828 -3.94283,-14.69775l18.4642,-15.4831l-8.38263,-14.53745l-22.64757,8.25443c-3.2281,-3.93136 -6.83842,-7.54391 -10.771,-10.77079l8.27046,-22.63168l-14.53743,-8.39871l-15.4831,18.48042c-4.70711,-1.77378 -9.63691,-3.09688 -14.72985,-3.92696l0.01603,-0.01586l-4.16733,-23.73761l-16.78132,0l0,-0.00011l0,0zm8.39869,40.8716c32.67677,0 59.17564,26.48283 59.17564,59.1596c0,32.67677 -26.49887,59.15962 -59.17564,59.15962c-32.67677,0 -59.15962,-26.48285 -59.15962,-59.15962c0,-32.67677 26.48286,-59.1596 59.15962,-59.1596z" stroke-dashoffset="0" stroke-miterlimit="4" stroke-linejoin="round" stroke-linecap="round" stroke-width="2"/>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
并使用CSS应用动画:
.svg {
width:200px;
height:200px;
float:left;
position: fixed;
top: …Run Code Online (Sandbox Code Playgroud) 我想知道实例化 boto3 s3 客户端的最佳位置在哪里,以便它可以在 django 中的请求期间重复使用。
我有一个带有计算属性的 django 模型,它返回一个签名的 s3 url:
@property
def url(self):
client = boto3.client('s3')
params = {
'Bucket': settings.BUCKET,
'Key': self.frame.s3_key,
'VersionId': self.key
}
return client.generate_presigned_url('get_object', Params=params)
Run Code Online (Sandbox Code Playgroud)
该对象被序列化为 json 并在一个列表中返回,该列表可以包含 100 个这些对象。
尽管boto3.client('s3')在实例化时不执行任何网络请求,但我发现它很慢。
放置S3_CLIENT = boto3.client('s3')成settings.py,然后使用,而不是每实例化对象的新客户端,降低〜3X的响应时间与100个结果。但是,我知道将全局变量放在settings.py
我的问题是在哪里实例化这个客户端,以便至少可以在请求级别重用?
我有一个带有受保护端点的DRF API,它根据用户有权访问的内容返回过滤后的数据.
我有一个单独的Django OAuth2提供程序,它包含用户模型和确定用户有权访问权限所需的值.
用户应该能够通过DRF API上的登录端点进行身份验证.API依次代表用户从Oauth2提供程序获取令牌,并进行一些调用以获取允许用户访问的资源列表.
理想情况下,DRF API将生成令牌并将其返回给用户.每当用户使用令牌发出后续请求(登录后)时,API就能够通过调用Oauth提供程序返回的值来过滤结果.
问题是如何存储这些信息.这类似于在匿名用户会话中存储数据,但使用请求标头而不是cookie.我已经考虑过滚动自定义版本的django.contrib.sessions.middleware.SessionMiddleware,但我更喜欢使用已建立的方法而不是编写自定义代码,因为这似乎不应该是一个独特的问题.
重申:是否可以创建匿名用户会话,存储信息,并通过请求标头而不是cookie检索会话?