ajax 跨域 , php 已经加入了 响应头,为何还是不行

发布于 2022-09-11 21:56:12 字数 572 浏览 14 评论 0

图片描述

图片描述

图片描述

ajax 里面 不加 token 就没问题 , 加了就报错 , 但是 我已经在 php 文件里加了

header('Access-Control-Allow-Headers:Accept,Referer,Host,Keep-Alive,User-Agent,X-Requested-With,Cache-Control,Content-Type,Cookie,Token');

这两行代码啊 , 为啥还是不行 ????


问题已解决, 是没有指定文件名 index.php 的原因 , 但是 nginx 我配置了 默认指向 index.php 的,为啥不行 , 不知道原因 。。。。。。。。。。。。。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

娇纵 2022-09-18 21:56:12

nginx location 下面配置

if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'X-Requested-With,Token';
            add_header 'Content-Length' 0;
            return 200;

}
搞定!!

旧故 2022-09-18 21:56:12

编辑了,应该是你声明的不够全
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');

猫卆 2022-09-18 21:56:12

php 没写过。
应该是类似的吧。
指定的响应头应该有好几个,你这里只指定了一个,应该不行。
以下是nodejs 的写法。

res.header('Access-Control-Allow-Origin',"*") ;// 指定允许其他域名访问
res.header('Access-Control-Allow-Methods',"GET,PUT,POST,DELETE");// 响应类型
res.header('Access-Control-Allow-Headers',"Content-Type") ;// 响应头设置
res.header('Access-Control-Allow-Credentials',"true")
是你 2022-09-18 21:56:12

header("Access-Control-Allow-Origin:http:*"); 没有http:*这种写法,要么*,要么具体的域名http://xxx.com

报错是提示405,需要返回以下头

header('Access-Control-Allow-Methods:POST,OPTIONS,GET');
久隐师 2022-09-18 21:56:12

好好读文档:

如果需要多个域名但不是任意域名,需要HTTP引擎或PHP配合:

仅此而已 2022-09-18 21:56:12
    'Access-Control-Allow-Origin':'*',
    'Access-Control-Allow-Methods':'GET, POST, OPTIONS, HEAD',
    'Access-Control-Allow-Headers':'Origin, X-Requested-With, Content-Type, Accept, authorization',
    'Access-Control-Max-Age':1728000

根据自己的需要去添加;

另外如果你有自定义头,也是需要加上, 就像我这里的 authorization

至于为什么,可以查阅cors等相关文档

----更新

看了,你更新之后的问题。 你这个还没到跨域那一层。

你的 options请求 直接405了,是不是后台没处理

秋叶绚丽 2022-09-18 21:56:12

你的截图可以看出,跨域是先请求了options 方法。所以你的请求要支持这个方法。
例如url:xxx.com/aa 这个地址需要支持options 请求
并且你请求的header 也需要支持

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, content-type, Accept,access_token");

妥活 2022-09-18 21:56:12
header("Access-Control-Allow-Origin:http://bb.com");
header("Access-Control-Allow-Headers: X-Requested-With,X_Requested_With");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
深海不蓝 2022-09-18 21:56:12

看着说预检请求不允许,我觉得你可以看看OPTIONS的那个请求返回头有什么信息,是不是你有自定义的header字段,然后设置了不允许操作,仔细看下这个文档,https://developer.mozilla.org...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文