跨源请求的服务器端配置

时间:2016-01-25 04:33:16

标签: apache api rest virtualhost

我有一个当前服务的开发服务器(Apache)一个可以跨域访问的API,以下是我的VirtualHost配置:

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

我不完全了解上述设置的功能,现在我必须将其移至生产环境,我不确定此配置是否已准备就绪。如果我按原样将其转移到生产中,你能否帮助阐明其影响?

1 个答案:

答案 0 :(得分:2)

这些配置选项允许您的应用程序作为API运行。它们是HTTP access control (CORS)的必要部分。

前四行是设置标题,可用于控制API的访问方式,其余行允许OPTIONS请求,这些请求将检查是否允许请求。更多信息 - universal-CORS-htaccess

Access-Control标头设置为允许来自不同域的资源请求。它们还允许您限制哪些域访问您的API资源以及使用哪些方法。例如,您的API可能会用于使用POST请求专门为某个域提供资源。因此,您可以使用:

Access-Control-Allow-Origin "http://foo.example"
Access-Control-Allow-Methods "POST"

这些配置是您的应用程序作为API运行所必需的,但它是如何准备生产的?没有关于服务器环境和应用程序框架等的更多细节,很难说。您可能希望将这些选项从.htaccess文件中移出,或者首先启用.htaccess文件。但你确实需要它们。