我想从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
});
答案 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';
}
}
完成此操作后,我认为您无需在发送配置中进行任何更改。