ajax 跨域 , php 已经加入了 响应头,为何还是不行
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
nginx location 下面配置
}
搞定!!
编辑了,应该是你声明的不够全
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');
php 没写过。
应该是类似的吧。
指定的响应头应该有好几个,你这里只指定了一个,应该不行。
以下是nodejs 的写法。
header("Access-Control-Allow-Origin:http:*");
没有http:*
这种写法,要么*
,要么具体的域名http://xxx.com
报错是提示405,需要返回以下头
好好读文档:
如果需要多个域名但不是任意域名,需要HTTP引擎或PHP配合:
根据自己的需要去添加;
另外如果你有自定义头,也是需要加上, 就像我这里的
authorization
至于为什么,可以查阅cors等相关文档
----更新
看了,你更新之后的问题。 你这个还没到跨域那一层。
你的 options请求 直接405了,是不是后台没处理
你的截图可以看出,跨域是先请求了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");
看着说预检请求不允许,我觉得你可以看看OPTIONS的那个请求返回头有什么信息,是不是你有自定义的header字段,然后设置了不允许操作,仔细看下这个文档,https://developer.mozilla.org...