我有一个 AngularJS/NodeJs 网络应用程序,并且在 DigitalOcean 上使用 Nginx 作为服务器,并且我也使用 CloudFlare。
该网站正常运行,一周前,我访问该网站时发现我的索引已更改为,
欢迎使用 nginx!
如果您看到此页面,则表示 nginx Web 服务器已成功安装并正常运行。需要进一步配置。
有关在线文档和支持,请参阅 nginx.org。商业支持可在 nginx.com 上获得。
检查了我的 Nginx 配置文件,发现配置没有任何问题,所以我删除了索引并上传了旧索引网站已经恢复运行,但是我无法再登录,并且我相信我无法发出任何 API 请求。
当我尝试登录时我得到的只是来自控制台的此消息。
火狐
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://dev.website.com/api/auth/login.
(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。
铬合金
访问 XMLHttpRequest 'https://dev.supplieson.com/api/auth/login' 来自起源 'http://dev.supplieson.com' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
我的 Nginx 配置如下
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
root /usr/share/nginx/html;
index index.html index.htm index.nginx-debian.html;
#server_name supplieson.com www.supplieson.com;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
location / {
try_files $uri $uri/ /index.html =404;
}
location ~ ^/images/(.*) {
alias /usr/share/nginx/api/supplieson_backend/images/$1;
}
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1m;
}
}
Express 应用程序
import cors from 'cors';
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, PUT, DELETE, OPTIONS"
);
next();
});
app.use(cors());