通过Apache和Nginx解决跨域问题

释放双眼,带上耳机,听听看~!

为什么配置伪静态?
1.伪静态通过URL重写隐藏应用的入口文件index.php和实际路径,会减少些许安全问题。
2.配置伪静态重写URL后,可以使得URL链接更加优美,否则会有太多的[/&?]等带参字符,使得路径凌乱,在拼接一些跳转逻辑时也会很繁琐。

为什么配置跨域?
为什么给你设置重重障碍?讲一讲Web开发中的跨域

跨域问题可以在PHP代码或Nginx/Apache中解决,在这里我们统一使用HTTP Server的配置来解决。

在PHP代码中解决无法涵盖一些静态资源的跨域问题,例如我们的海报生成是在前端使用Canvas组合绘制的,如果只在PHP代码中加入header跨域设置,图片这些静态资源是不走PHP的响应层的,Canvas下载这些图片资源也会提醒跨域问题导致图片无法组合。

Nginx配置

宝塔面板请在网站设置中,选择伪静态一栏,配置成如下。切记不要在Nginx的主配置文件中去更改,否则会污染您的全部网站!

location / {
if (!-e \(request_filename){
rewrite ^(.*)\) /index.php?s=$1 last; break;
}
}

add_header 'Access-Control-Allow-Origin' '' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,HEAD,OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, token, platform' always;
if ($request_method = OPTIONS ) {
return 200;
}


Apache配置


Header always add Access-Control-Allow-Origin: "
"
Header always add Access-Control-Allow-Methods: "GET,POST,PUT,DELETE,HEAD,OPTIONS"
Header always add Access-Control-Max-Age: "1000"
Header always add Access-Control-Allow-Credentials: "true"
Header always add Access-Control-Allow-Headers: "Origin, X-Requested-With, Content-Type, Accept, token, platform"

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*\( index.php?s=\)1 [QSA,PT,L]
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule .*\( \)1 [R=200,L]

给TA打赏
共{{data.count}}人
人已打赏
php笔记

ThinkPHP接入腾讯云天御验证码 腾讯云验证码

2020-5-29 13:55:59

php笔记

MAMP Pro开发环境中使用Nginx时 访问fastadmin后台提示模块不存在解决方案

2020-7-31 15:12:50

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索