Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 跨(子)域ajax表单随验证码提交_Php_Ajax_Session_Cross Domain_Captcha - Fatal编程技术网

Php 跨(子)域ajax表单随验证码提交

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请求,代理向后端发送验证请求并返回结果 除了在用户会话中保存引用的验证码之外,所有这些都非常有效。由于前端网站将表单提交到后端,后端将使用前

我遇到了以下问题。前端网站(www.domain.com)用于填写属于后端(backend.domain.com)的表单。此表单受验证码保护,验证码的参考值保存在用户会话中(在PHP中)

提交应该是基于Ajax的,这会给跨域带来一些问题。因此,a在www.domain.com上编写了一个小PHP代理。此代理请求后端的表单。当用户提交表单时,向代理发出Ajax请求,代理向后端发送验证请求并返回结果

除了在用户会话中保存引用的验证码之外,所有这些都非常有效。由于前端网站将表单提交到后端,后端将使用前端会话

解决这个问题的最佳方法是什么?我想出了两种方法。第一种方法是将captcha的引用包含在表单中(散列),这样就不需要会话。另一种方法是使用iframe直接从后端包含表单。第二种方法可能很管用,但感觉很难看。对于这种情况,你有什么建议

更新:描述情况的序列图:

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更新了答案,希望有所进展。