对于未知数量的域,跨域的 $.post 的替代/修复是啥
Posted
技术标签:
【中文标题】对于未知数量的域,跨域的 $.post 的替代/修复是啥【英文标题】:What's an Alternative/Fix to $.post for Cross Domain for Unknown Amount of Domains对于未知数量的域,跨域的 $.post 的替代/修复是什么 【发布时间】:2017-08-01 12:27:27 【问题描述】:对于真正需要做的事情,这可能是一种非常业余/糟糕的方法,但我目前正在构建一个可以使用脚本标签嵌入客户网站的平台。然后,该脚本允许用户输入一些信息并将其发送到电子邮件。其中一个选项是查看某个人的社交媒体。我想要做的是将社交按钮点击记录到 mysql 数据库。
目前我的社交点击代码是$.post
到b.domain.com
。我收到错误消息:XMLHttpRequest cannot load due to access control checks.
当我手动将每个域添加到 .htaccess 中的允许源时,此错误就会消失,但是如果必须为客户想要嵌入脚本的每个域添加它,这将非常令人沮丧. *
因为Allow Credentials
而无法使用,所以我对这个主题的了解有限。
任何指向正确方向的人都将不胜感激,如果问题措辞不当/信息不足,我们深表歉意。
【问题讨论】:
【参考方案1】:当我手动将每个域添加到 .htaccess 中的允许源时,此错误就会消失,但是如果必须为客户端想要嵌入脚本的每个域添加此内容,这将非常令人沮丧。
*
无法使用,因为Allow Credentials
因此,除了在响应中发送 *
之外,您还可以让 Origin
请求标头的值基本上与
Access-Control-Allow-Origin
响应头:
SetEnvIfNoCase ORIGIN (.*) ORIGIN=$1
Header always set Access-Control-Allow-Origin "%ORIGINe"
这将允许来自任何来源的请求,即使请求包含凭据。
下面是实现相同效果的另一种方法。
RewriteEngine On
RewriteCond %HTTP:Origin (.+)
RewriteRule . - [E=CORS_ORIGIN:%1]
Header set Access-Control-Allow-Origin %CORS_ORIGINe env=CORS_ORIGIN
【讨论】:
以上是关于对于未知数量的域,跨域的 $.post 的替代/修复是啥的主要内容,如果未能解决你的问题,请参考以下文章