【问题标题】:CORS - Sending an AJAX POST from one domain to another [duplicate]CORS - 从一个域向另一个域发送 AJAX POST [重复]
【发布时间】:2019-08-30 09:26:09
【问题描述】:

我想从 domain.com 向 sub.domain.com 发送 AJAX POST 请求。我知道我需要启用 CORS,但是在网上阅读后,我不确定是否需要在发送服务器或接收服务器上执行此操作,还是两者都需要?

我可以将以下内容添加到我的接收服务器 nginx 中吗?

if ($request_method = 'POST') {
  add_header 'Access-Control-Allow-Origin' 'domain.com';
  add_header 'Access-Control-Allow-Methods' 'POST';
}

是否需要在发送服务器配置上进行设置,或者仅在代码中进行设置就足够了?

$.ajax({
  type: "POST",
  url: sub.domain.com,
  data: data,
  success: success,
  dataType: dataType
});

【问题讨论】:

  • CORS 始终只需要在接收服务器上设置。
  • 这里没有发送服务器,发送者是浏览器,在用户的机器上——即它是一个客户端。请求直接从该浏览器发送到接收服务器。不涉及其他服务器

标签: javascript jquery nginx cors


【解决方案1】:

我认为 nginx 不会自动允许来自 domain.com 的任何所有子域的请求。不过,您可以使用正则表达式和模式匹配来实现这一点:

server {

    root /path/to/your/stuff;

    index index.html index.htm;

     set $cors "";

    if ($http_origin ~* (.*\.domain.com)) {
        set $cors "true";
    }

    server_name domain.com;

    location / {

        if ($cors = "true") {
            add_header 'Access-Control-Allow-Origin' "$http_origin";
            add_header 'Access-Control-Allow-Methods' 'POST';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';
        }
}

完成此操作后,我认为您不需要更改发送配置中的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2015-08-20
    • 2016-03-26
    • 1970-01-01
    • 2019-11-25
    • 2010-10-14
    • 2019-01-12
    相关资源
    最近更新 更多