2
kmdd33 OP |
3
ferrum 2017-03-27 21:01:19 +08:00
别上来就贴一大堆格式乱了的配置啊,起码得说具体点吧。
|
4
fanwei 2017-03-27 21:05:10 +08:00
确实应该说清楚环境。比如油猴脚本里如果用 jquery 怎么设置都会有上面这个提示。必须用对应的 GM 函数。
|
5
kmdd33 OP |
6
kmdd33 OP |
7
johnny23 2017-03-27 21:37:34 +08:00 via iPhone
我以前遇到这些问题 一怒之下把所有接口都做成 jsonp
|
9
johnny23 2017-03-27 22:57:52 +08:00 via iPhone
@kmdd33 额 网上教程一大堆 唯一区别就是返回字符串是一个带了 callback 函数的字符串而已
|
10
ikaros 2017-03-27 23:23:27 +08:00
我记得设置 * 好像是没用的, console 里的提示记得就是说当前 host 和*不匹配之类的, 你是真的需求让所有外部都可以访问? 我当时因为只有两个 host 需要做这个,于是就把这两个 host 存在一个 list 里面,然后看来访的 host 是不是在这个 list 里面,在的话就把这个 host 加到 header 里面
|
11
Numbcoder 2017-03-27 23:37:00 +08:00
把
add_header 'Access-Control-Allow-Origin' '*'; 改成 add_header Access-Control-Allow-Origin $http_origin; 试试 |
13
kmdd33 OP @ikaros 请问具体你是如何添加的呢?如果把*换成 https://www.mydomain.com. 放在自己的 Nginx.conf 文件里面,还是不行啊
|
15
Showfom 2017-03-28 04:55:55 +08:00 via iPhone
你没指定文件的后缀 我们的配置给你参考
# Cross domain webfont access location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; allow all; } location ~* .(ogg|ogv|mp4|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { add_header "Access-Control-Allow-Origin" "*"; add_header "Timing-Allow-Origin" "*"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; expires max; log_not_found off; } location ~* .(ttf|ttc|otf|eot|woff|woff2|svg|svgz)$ { add_header "Access-Control-Allow-Origin" "*"; add_header "Timing-Allow-Origin" "*"; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; expires max; log_not_found off; } |
16
Showfom 2017-03-28 04:56:34 +08:00 via iPhone
preload 那段头部不是 https 可以忽略
|
18
binux 2017-03-28 05:29:24 +08:00
把返回头发出来啊, console 没有用
|
22
jugelizi 2017-03-28 10:37:01 +08:00
如果你要 post 就不能 *
要指定域名就可以了 |
23
MinonHeart 2017-03-28 10:43:59 +08:00
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: * 这两个不能一起用。 Credentials 为 true , Access-Control-Allow-Origin 使用具体的值 |
24
kmdd33 OP |
25
kmdd33 OP @Showfom 把您发的配置代码粘贴到 nginx.conf 的 server 段,重启,还是老错误,麻烦你看看我发的响应头截图
|
27
kmdd33 OP |
28
MinonHeart 2017-03-28 14:13:23 +08:00
@kmdd33 你截图中的 origin 还是*
|
29
jswh 2017-03-28 14:47:13 +08:00
ajax 在发送正式数据之前会先用 HEAD 请求一次。你 HEAD 没有加 Access-Control-Allow-Origin
|
31
kmdd33 OP @MinonHeart 现在 Access-Control-Allow-Origin 里面既有*也有 https://www.mydomain.com , 我把我的 nginx.conf 也截图了,您再分析一下怎么回事? https://cl.ly/2Z3S3W1Y0j3F/annotate ( header 头) https://cl.ly/0O0f2Q402R3R/annotate ( nginx.conf 截图)
|
33
yoke123 2017-03-28 16:03:29 +08:00
|
34
Dlad 2017-03-28 17:04:21 +08:00
后端代码里输出 Access-Control-Allow-Origin 头就可以了,现代浏览器都认识。
ie8 需要引入额外的 js ,并对 ajax 请求有一定要求。 |
35
ljcarsenal 2017-03-28 17:39:23 +08:00
你看看是不是报错的请求之前有个 option 方法的请求
|
36
shuson 2017-03-28 17:49:53 +08:00
cors 配置没问题,应该是其他没注意到的地方的问题
|
37
MinonHeart 2017-03-28 18:12:25 +08:00
headers 中的同一个项不能多配,这东西又不是随便配的
最终配出来是 Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: access-origin |
38
banksiae 2017-03-28 18:50:19 +08:00
噗噗,前几天刚遇到这个问题, Access-Control-Allow-Origin 的问题,后端 set_header ; cookie 的问题,统一域名或者 url 后面加上类 cookie 就行了
|
39
qinxi 2017-03-28 19:24:55 +08:00
其实反向代理可以解决跨域,还是服务端无感知的
|
41
qinxi 2017-03-28 23:09:12 +08:00
|
42
030 2017-03-29 03:24:16 +08:00
我前几天换 CloudFront 也碰到过这个,不过加了
add_header Access-Control-Allow-Origin *; 就好了,问题只是 CloudFront 会把 header cache ,好像和主题沒什么关系 |