Php 跨(子)域ajax表单随验证码提交
我遇到了以下问题。前端网站(www.domain.com)用于填写属于后端(backend.domain.com)的表单。此表单受验证码保护,验证码的参考值保存在用户会话中(在PHP中) 提交应该是基于Ajax的,这会给跨域带来一些问题。因此,a在www.domain.com上编写了一个小PHP代理。此代理请求后端的表单。当用户提交表单时,向代理发出Ajax请求,代理向后端发送验证请求并返回结果 除了在用户会话中保存引用的验证码之外,所有这些都非常有效。由于前端网站将表单提交到后端,后端将使用前端会话 解决这个问题的最佳方法是什么?我想出了两种方法。第一种方法是将captcha的引用包含在表单中(散列),这样就不需要会话。另一种方法是使用iframe直接从后端包含表单。第二种方法可能很管用,但感觉很难看。对于这种情况,你有什么建议 更新:描述情况的序列图:Php 跨(子)域ajax表单随验证码提交,php,ajax,session,cross-domain,captcha,Php,Ajax,Session,Cross Domain,Captcha,我遇到了以下问题。前端网站(www.domain.com)用于填写属于后端(backend.domain.com)的表单。此表单受验证码保护,验证码的参考值保存在用户会话中(在PHP中) 提交应该是基于Ajax的,这会给跨域带来一些问题。因此,a在www.domain.com上编写了一个小PHP代理。此代理请求后端的表单。当用户提交表单时,向代理发出Ajax请求,代理向后端发送验证请求并返回结果 除了在用户会话中保存引用的验证码之外,所有这些都非常有效。由于前端网站将表单提交到后端,后端将使用前
Client www.domain.com backend.domain.com
| | |
|-------visit site---------->| |
| |-----get form----->|
| |<----return form---|
|<------return form----------| |
| | |
|-------submit form--------->| |
| |-----submit form-->|
| |<----send reply----|
|<------captcha failed-------| |
v v v
客户端www.domain.com backend.domain.com
| | |
|-------参观现场------->|
||------获取表单------>|
| ||
||这感觉像是一个cookie(或会话号)问题。会话的cookie集对www站点有效,但对后端站点无效。但是,由于所有通信都是通过您的前端进行的,您能否不使用前端站点进行授权
Client www.domain.com backend.domain.com
| | |
|-------visit site---------->| |
| |--get login form-->|
| |<----return form---|
| |set cookie |
|<-return login form+cookie--| |
| | |
|----submit login form------>| |
| |-----submit form-->|
| | |check cookie
| |<----send reply----|
|<------captcha failed-------| |
v v v
客户端www.domain.com backend.domain.com
| | |
|-------参观现场------->|
||--获取登录表单-->|
| ||
|| |检查cookie
||这感觉像是一个cookie(或会话号)问题。会话的cookie集对www站点有效,但对后端站点无效。但是,由于所有通信都是通过您的前端进行的,您能否不使用前端站点进行授权
Client www.domain.com backend.domain.com
| | |
|-------visit site---------->| |
| |--get login form-->|
| |<----return form---|
| |set cookie |
|<-return login form+cookie--| |
| | |
|----submit login form------>| |
| |-----submit form-->|
| | |check cookie
| |<----send reply----|
|<------captcha failed-------| |
v v v
客户端www.domain.com backend.domain.com
| | |
|-------参观现场------->|
||--获取登录表单-->|
| ||
|| |检查cookie
||序列图不完全正确,我用描述情况的序列图更新了我的问题。但你是对的,这是一个cookie/会话号问题。@Intru更新了答案,希望有所进展。序列图不完全正确,我用描述情况的序列图更新了我的问题。但您是对的,这是一个cookie/会话号问题。@Intru更新了答案,希望有所进展。