![如何在 Discourse 中设置跨域规则?](https://linux22.com/image/624956/%E5%A6%82%E4%BD%95%E5%9C%A8%20Discourse%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%E8%B7%A8%E5%9F%9F%E8%A7%84%E5%88%99%EF%BC%9F.png)
因此,我使用以下页面从用户那里收集信息,并将其发送到 forums.awake-gaming.com/posts 以供讨论,以便为我发帖。
页面网址:awake-gaming.com/join-us.html 我发送信息的网址:forums.awake-gaming.com/posts
正如预期的那样,我需要为 forums.awake-gaming.com 上的此类 ajax 调用设置一些跨域规则。
以下是我的 discourse 的 nginx 配置,etc/nginx/conf.d/discourse.conf
# Additional MIME types that you'd like nginx to handle go in here
types {
text/csv csv;
}
upstream discourse {
server unix:/var/www/discourse/tmp/sockets/thin.0.sock;
server unix:/var/www/discourse/tmp/sockets/thin.1.sock;
server unix:/var/www/discourse/tmp/sockets/thin.2.sock;
server unix:/var/www/discourse/tmp/sockets/thin.3.sock;
}
server {
listen 80;
gzip on;
gzip_min_length 1000;
gzip_types application/json text/css application/x-javascript;
server_name forums.awake-gaming.com;
sendfile on;
keepalive_timeout 65;
# maximum file upload size (keep up to date when changing the corresponding site setting)
client_max_body_size 2m;
# path to discourse's public directory
set $public /var/www/discourse/public;
location / {
root $public;
add_header Access-Control-Allow-Origin "http://awake-gaming.com/join-us.html";
add_header Access-Control-Allow-Methods: "GET, PUT, POST, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers: "Content-Type, Authorization, X-Requested-With";
location ~ ^/assets/ {
expires 1y;
add_header Cache-Control public;
add_header ETag "";
break;
}
location ~ ^/uploads/ {
expires 1y;
add_header Cache-Control public;
add_header ETag "";
## optional upload anti-hotlinking rules
#valid_referers none blocked mysite.com *.mysite.com;
#if ($invalid_referer) {
# return 403;
#}
# custom CSS
location ~ /stylesheet-cache/ { try_files $uri =404; }
# images
location ~* \.(gif|png|jpg|jpeg|bmp|tif|tiff)$ { try_files $uri =404; }
# thumbnails & optimized images
location ~ /_optimized/ { try_files $uri =404; }
# attachments must go through the rails application to get the right content-disposition header
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
proxy_set_header X-Accel-Mapping $public/=/downloads/;
proxy_pass http://discourse;
break;
}
try_files $uri @discourse;
}
location /downloads/ {
internal;
alias $public/;
}
location @discourse {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_pass http://discourse;
}
}
但是当我在 awake-gaming.com/join-us.html 提交表单时弹出控制台时出现错误:
XMLHttpRequest cannot load http://forums.awake-gaming.com/posts. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://awake-gaming.com' is therefore not allowed access.
我也尝试过重启 nginx 服务器,但结果并没有什么不同。此外,ajax 调用没有返回成功,但数据通过 POST 成功发送。我该如何解决这个问题?