No' Access-Control-Allow-Origin'标头出现在请求的资源上#34;

时间:2014-07-08 06:38:08

标签: apache .htaccess

我已经为我的localhost(apache)服务器启用了URL重写模式。但是一旦我尝试通过我的localhost访问远程URL。它会提示错误:

"Internal Server Error" or sometime "Not Found" 

如果我在htaccess文件中做了一点改动(通过删除[P]),那么它在控制台日志中显示了预期的URL,但仍然提示错误为 -

" No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin http://localhost:8080' is therefore not allowed access."

我的.htaccess文件如下:

 <IfModule mod_rewrite.c>
  RewriteEngine on 
  RewriteCond  %{SERVER_PORT} !^8080$
  RewriteRule ^(.*) http://%{SERVER_NAME}:8080%{REQUEST_URI} [P]
  RewriteRule ^(.*) http://<Remote_ip_address>:<port_no>%{REQUEST_URI} [P]
 </IfModule>

任何建议都将受到高度赞赏!!

2 个答案:

答案 0 :(得分:3)

这是一个有意的安全功能(Same-origin policy)。您需要在目标服务器上启用CORS(跨源资源共享)(不在此处的.htaccess文件中,而是在Remote_ip_address上)。以下是一些资源:

答案 1 :(得分:0)

下面的此解决方案在位于其中的vhost文件中对我有用:

/etc/httpd/conf.d/vhosts/xxxx.conf

SetEnvIf Origin "^http(s)?://(.+\.)?(yourdomain\.com|otherdomain\.com)$" origin_is=$0
Header set Access-Control-Allow-Origin %{origin_is}e env=origin_is
Header set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Headers "Authorization"
Header always set Access-Control-Allow-Methods "GET"

不要忘记

  • 更改 yourdomain.com | otherdomain.com
  • 要添加/修改正确的访问控制允许方法GET,PUT,PUATCH,DELETE,POST