我完成了我的角度项目。
在我的项目中,我向PHP文件发送带有数据的POST请求,然后将结果返回给Angular。
现在我只允许来自源域的请求,并拒绝来自任何域的请求。
我尝试使用:
header("Access-Control-Allow-Origin: example.com");
但不管用。 我不想使用$_server['HTTP_REFFER'],因为它可以被操纵。 我也尝试过使用。htaccess,但我不知道如何实现。 我试过这样的方法:
order deny, allow
deny from all
allow from mydomain.com
但不管用。
我的项目已经具有以下。htaccess文件:
RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html
取自:https://angular.io/guide/deployment#routed-apps-must-fallback-to-indexhtml
我能做什么?
谢谢。
简短的回答:
header("Access-Control-Allow-Origin: *");
是应该工作的最小值(在您的服务器端),但是您可能需要添加两个额外的头,例如:
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");
与任何header()
调用一样,确保在任何输出之前执行这些调用。
长答:
CORS允许在相对安全的情况下执行跨始发地查询,这取决于飞行前请求选项,以检查哪些是允许的,哪些是不允许的。
access-control-allow-origin
设置允许的源(域)。 您可能只想使用受信任的域。
access-control-allow-methods
设置允许的方法。 通常,很多这样的。
access-control-allow-headers
设置允许哪些可选(和自定义)标头。 通常,您希望在content-type之上包含任何非标准头。
CORS的文档非常丰富,这里有https://developer.mozilla.org/en-us/docs/web/http/CORS