tp5.1 处理跨域问题

576 阅读1分钟

tp5.1 处理跨域问题

1、首先在tp5的入口文件:public/index.php 在里面添加三行:

header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE");
header("Access-Control-Allow-Headers:x-requested-with, Referer,content-type,token,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding");

这样就可以了,在tp5的方面就弄完了,没错,就是这么简单而且一般百度能搜索到的,就是这些

一般情况下这样也就行了,但是有的时候还会存在跨域,原因就是前端请求的时候有一个地方需要注意
2、前端uniapp的网络请求用的是uni.request,不管是uni.request还是jq的ajax,都一样,都需要注意一点,就是请求类型不能是application/json!!

uni.request({
 url'http://test-tp5.io',
  data: {a:1,b:2},
  header: {
 'content-type''application/x-www-form-urlencoded'// 用这个!
  // 'content-type': 'application/json', 这里是反面举例,一定不要用这个!不信你试试!
  'token''this is token'// 看到这个token了没有,它在在第一步的第三行出现过~
  },
  method'POST',
  success: (res)=> {
      console.log('成功了:',res);
},
    fail: (res)=>{
        console.log('出错了:',res);
    }
});

3、经过搜索、测试,现得出在nginx下如何配置跨域的自定义header参数

location / {
    if ($request_method = 'OPTIONS') {
            # 【必须】建议在发布环境用域名而不是“星”号
            add_header Access-Control-Allow-Origin '*';
            # Allow-Headers 指定允许的自定义请求头,如用户 Token,而且这些不用写那么多,只写自定义的参数就可以
            add_header Access-Control-Allow-Headers 'token';
            # 一般来说在 POST 请求时因为 Content-Type 的原因在本次 OPTIONS 预请求后,
            # 会再发送的 POST 请求,而 POST 请求是可以正常接收的
            # add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, PATCH, OPTIONS';
            # 请求是否携带 Cookie,无需要可忽略。有说该设置为 true 时 Allow-Origin 不可为 '*'
            # add_header Access-Control-Allow-Credentials true;
            # 这个响应 Content-Type 也是根据需要设置(一般情况可以不用设置)
            # add_header Content-Type 'application/json; charset=utf-8';
            # 如下 Content-Length 可忽略,返回状态码根据个人习惯可设置为 200
            add_header Content-Length 0;
            return 204;
        }
     # 没错,为了方便你们对比,上面这些才是要添加的
     # 而且你们可能发现了,我上面有好多注释掉的,因为这些是我在搜索出来的,而且经过我一步步的注释,发现只要一开始的两行和最下面的两行就可以了
 
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
        }
}