Apache / Nginx:代理POST请求到远程服务器,在本地处理OPTIONS请求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Apache / Nginx:代理POST请求到远程服务器,在本地处理OPTIONS请求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1575字,纯文字阅读大概需要3分钟。
内容图文
![Apache / Nginx:代理POST请求到远程服务器,在本地处理OPTIONS请求](/upload/InfoBanner/zyjiaocheng/961/6b7b684bce854185a637d9350de87c5c.jpg)
我正在尝试将Apache配置为远程服务器的代理,以允许使用CORS的跨域AJAX.为此,我需要Apache响应2个HTTP谓词,如下所示:
>选项:
使用一些简单的HTTP标头响应此CORS“飞行前”请求.我记得这可能是一个简单的CGI脚本(options.pl).
> POST:
将所有POST请求代理到远程服务器,但添加Access-Control-Allow-Origin“*”标头以允许跨域请求发生.
我可以独立地实现这两个要求,但是我无法配置Apache来同时执行这两个要求.问题是,当配置ProxyPass和ProxyPassReverse时,OPTIONS请求不再命中CGI脚本,它们被代理到远程服务器.
我目前的配置如下.我想用纯网络服务器解决方案解决这个问题,例如:如果可能的话,Apache / Nginx(而不是运行一些应用程序代码).
<VirtualHost *:80>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
DocumentRoot /var/www
<Location "/">
# Disallow all verbs except OPTIONS and POST
order deny,allow
deny from all
# OPTIONS should be handled by a local CGI script
<Limit OPTIONS>
allow from all
Script OPTIONS /cgi-bin/options.pl
</Limit>
# POST requests are proxied to a remote server
<Limit POST>
allow from all
ProxyPass http://somewhere-else/
ProxyPassReverse http://somewhere-else/
Header add Access-Control-Allow-Origin "*"
</Limit>
</Location>
</VirtualHost>
解决方法:
以下是我使用Nginx解决它的方法.请注意,我使用的是需要0700的Headers More模块.
location / {
if ($request_method = 'OPTIONS') {
more_set_headers 'Access-Control-Allow-Origin: *';
more_set_headers 'Access-Control-Allow-Methods: POST, OPTIONS';
more_set_headers 'Access-Control-Max-Age: 1728000';
more_set_headers 'Content-Type: text/plain; charset=UTF-8';
return 200;
}
if ($request_method = 'POST') {
more_set_headers 'Access-Control-Allow-Origin: *';
proxy_pass http://somewhere-else;
}
}
内容总结
以上是互联网集市为您收集整理的Apache / Nginx:代理POST请求到远程服务器,在本地处理OPTIONS请求全部内容,希望文章能够帮你解决Apache / Nginx:代理POST请求到远程服务器,在本地处理OPTIONS请求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。