我想我已经浏览了100篇关于使用AngularJS启用CORS的Stackoverflow帖子。他们中的大多数都引用了向API添加标头。 如果您无法直接访问编辑您正在使用的API,是否仍有解决此问题的方法?
答案 0 :(得分:3)
如果您需要CORS标头,但原始API无法提供它们,您可以设置一个小型代理服务器并通过它进行调用。使用HAProxy或Nginx,您可以将目标限制为仅限API,并在途中添加标头。您也可以在网站原点下的路径上设置代理,并完全避免使用标头。
listen http-in
mode http
listen *:80
# Add CORS headers when Origin header is present
capture request header origin len 128
http-response add-header Access-Control-Allow-Origin %[capture.req.hdr(0)] if { capture.req.hdr(0) -m found }
rspadd Access-Control-Allow-Headers:\ Origin,\ X-Requested-With,\ Content-Type,\ Accept if { capture.req.hdr(0) -m found }
我更喜欢使用HAProxy,just need to add a few config lines。
使用Nginx,because it's incredibly resource-efficient作为标题和代理分别设置:
upstream api_server {
server apiserver.com;
}
server {
charset UTF-8;
listen 80;
root /home/web/myclient;
index index.html;
server_name myclient.com;
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://api_server/;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_redirect off;
}
location ~ /\. {
deny all;
}
location / {
try_files $uri;
}
}
两个示例都是从链接的博客帖子中复制的,以防它们消失。我没有写任何一个。
答案 1 :(得分:0)
如果您使用的是Mozilla Firefox,那么有一个名为"随处可见的附加组件"。如果你安装它,你可以在你想要的每个网站上激活和禁用它,它就像一个魅力。