CORS-将AJAX POST从一个域发送到另一个域

时间:2019-04-09 06:59:27

标签: javascript jquery nginx cors

我想从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
});

1 个答案:

答案 0 :(得分:0)

我认为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';
        }
}

完成此操作后,我认为您无需在发送配置中进行任何更改。