【问题标题】:Contact form 7 wordpress post form to different domain gives access control allow origin error联系表格 7 wordpress 发布到不同域的表格提供访问控制允许来源错误
【发布时间】:2016-09-13 10:06:31
【问题描述】:

我正在尝试使用 Web to Lead html 代码将联系我们表单详细信息发送到 Insightly CRM。我在我的functions.php中使用以下代码更改了表单的操作url:

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url($url) {
  global $post;
  $id_to_change = 1315;
  if($post->ID === $id_to_change)
    return 'https://xxxx.insight.ly/WebToLead/Create';
  else
    return $url;
}

inspector 看起来一切正常,但提交时出现以下错误:

XMLHttpRequest cannot load https://xxxx.insight.ly/WebToLead/Create. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://xxxx.com' is therefore not allowed access.

我尝试将此添加到我的functions.php:

add_action( 'init', 'allow_origin' );
function allow_origin() {
    header("Access-Control-Allow-Origin: *");
}

我尝试在 theme.php 中添加这个:

 header("Access-Control-Allow-Origin: *");

我尝试将此添加到联系表单 7 插件的 scripts.js 中:

$.ajax({
   url: url,
   ++headers: { 'Access-Control-Allow-Origin': '*' },
   ++crossDomain: true,

我尝试将其添加到 .htaccess:

Header always set Access-Control-Allow-Origin "*"

没有任何作用:( 我的服务器有 Varnish 4 和 ConfigServer Security & Firewall,但我禁用了这两者,仍然得到同样的错误。 请帮帮我:(

【问题讨论】:

    标签: cross-domain contact-form-7 insightly


    【解决方案1】:

    经过研究,我注意到 javascript 是问题所在,我无法以任何方式使用 Access-Control-Allow-Origin 绕过它。

    我在挂钩的 php 脚本中使用了 curl,因此它可以将详细信息发送到其他域。

    所以我在 functions.php 中添加了一个钩子,我将覆盖 wpcf7_mail_sent 函数:

    add_filter('wpcf7_mail_sent', 'wpcf7_custom_mail_sent');
    function wpcf7_custom_mail_sent($contact_form) {
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_URL,"https://xxxx.insight.ly/WebToLead/Create");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($_REQUEST));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
        curl_exec($ch);
        curl_close($ch);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-11
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多