跨域问题经常需要面对,前端需要做的比较直接
要么选择ajax异步提交,XML或者jsonp,要么表单提交前端常见跨域解决方案

jsonp基本可以搞定大部分跨域问题,但问题也比较明显,只能通过get方式提交
并且jsonp是通过把参数拼到URL上提交请求的
但是所有浏览器有URL长度限制,不同浏览器长度限制不一样
当出现要提交大段落内容的时候,比如说文章,用jsonp的话超出长度只能分割提交
很麻烦,而且说到底对安全性有些影响
而且axiox现在也不支持jsonp了,虽然有方式解决

尤其是图片类的资源上传,无法很好的用jsonp之类的方法实现

需要图片上传跨域的场景

当然可以不跨域最好不跨域,但是目前大部分项目都已经前后端分离了
静态资源和接口分别是不同的域名或者二级域名,这样就涉及到了跨域
如果是资源上传,跨域的时候需要后端Access-Control-Allow-Origin和当前请求的Origin一样,不能设置为*

php解决方法

如果是传统数据请求,那后端直接将Access-Control-Allow-Origin设置为*就好

 header('Access-Control-Allow-Origin:*');

但图片之类的资源上传Origin需要跟Access-Control-Allow-Origin的值一样
如果设置Access-Control-Allow-Origin跟当前的Origin一样的话就限制死了能上传的域名只有一个
要有其他域名需要调用这个接口的话就会被禁止

所以最好的方法就是限定能够调用这个接口的域名列表,也提高了一定的安全性

做法就是先获取当前请求的Origin,如果在允许访问的域名列表里
就将Access-Control-Allow-Origin的值设置为当前请求的Origin

$originList = [
'http://127.0.0.1',
'http://www.linkvall.cn',
'http://mobile.linkvall.cn',
];
if(in_array($_SERVER['HTTP_ORIGIN'], $originList)){
header('Access-Control-Allow-Origin:'.$_SERVER['HTTP_ORIGIN']);
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Headers:x-requested-with,content-type');
header("Access-Control-Allow-Methods: POST,GET,OPTIONS");
}

这样就能控制可以跨域的域名了,图片类资源就能像同域一样开心的上传上来了
post方式跨域提交同样适用

原文地址:https://segmentfault.com/a/1190000016979232

php后端控制可跨域的域名,允许图片跨域上传的更多相关文章

  1. WordPress搭建教程---购买域名+购买VPS主机+域名DNS解析+网站环境+上传网站程序

    WordPress搭建教程 购买域名---NameSilo 购买VPS主机---Vultr 域名DNS解析 网站环境 上传网站程序 参考文章: 1. WordPress搭建教程 https://zhu ...

  2. vue+Ueditor集成 [前后端分离项目][图片、文件上传][富文本编辑]

    后端DEMO:https://github.com/coderliguoqing/UeditorSpringboot 前端DEMO:https://github.com/coderliguoqing/ ...

  3. form表单上传域(type="file")的使用----上传文件

    一,单个文件的上传 1.html/jsp页面 <%@ page language="java" contentType="text/html; charset=UT ...

  4. 七牛---以一个七牛上传的实例小结下AJAX跨域【转】

    http://blog.csdn.net/netdxy/article/details/50699842 使用七牛过程中,很多用户或多或少遇到跨域的问题,这篇文章主要介绍下跨域的概念来看什么情况下会出 ...

  5. spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置

    spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...

  6. 【转】php通过curl跨域向asp.net服务器上传文件及参数

    转:http://blog.sina.com.cn/s/blog_13331dce50102vq32.html 这是一个由php通过调用asp.net接口向asp.net服务器post上传文件及参数并 ...

  7. easy ui 异步上传文件,跨域

    easy ui 跨域上传文件,代码如下: 1.html代码:(这段代码是个win窗体,我在点击上传图片按钮然后弹出一个上传图片的窗体,选择图片再进行上传,这样在form提交时,提交的参数会少一点.) ...

  8. kindedit,uedit 上传跨域返回

    1.kindedit 跨域上传图片的时候,a.com 上传到b.com接收图片服务器,然后返回图片地址. 2.一般如果不做任何处理是获取不到返回的信息的.原因是跨域了 3.所以一般在上传成功后,在跳转 ...

  9. Asp.Net Core 3.0 学习3、Web Api 文件上传 Ajax请求以及跨域问题

    1.创建Api项目 我用的是VS2019 Core3.1 .打开Vs2019 创建Asp.Net Core Web应用程序命名CoreWebApi 创建选择API 在Controller文件夹下面添加 ...

随机推荐

  1. Win7 如何禁用“切换用户”功能

    1.按win+r,输入gpedit.msc,点击确定: 2.依次点击计算机配置--管理模块--系统--登录,右侧列表中找到“隐藏“快速用户切换”的入口点”: 3.双击隐藏“快速用户切换”的入口点,点击 ...

  2. 51nod 1632 B君的连通

    题目: 这题看起来难,其实这么多概率啥的都是唬人的.甚至连快速幂都不用就可以解. 解法:    n个节点,n-1条边,期望会有一半的边被炸毁(因为总体概率就是50%). 即(n-1)/2条边被炸毁,这 ...

  3. Dapper基础知识三

    在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. Dapper,当项目在开发的时候,在没有必要使用依赖注入的时候,如何做 ...

  4. WordPress开启伪静态

    一.NGINX 的话在 domain.conf 的 server 增加代码: location / { try_files $uri $uri/ /index.php?$args; } 如果使用的是 ...

  5. Unable to load annotation processor factory

    很多人在项目开发中都会遇到项目名称左上角有个红叉,有些是Jar问题,有些是代码问题,有些是编译问题,对于我这种强迫症的是受不了这种情况发生的,如果不影响项目启动还好,废话少说,今天工作就出现了一个问题 ...

  6. HDU-2087 剪花布条 字符串问题 KMP算法 查匹配子串

    题目链接:https://cn.vjudge.net/problem/HDU-2087 题意 中文题咯 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条, ...

  7. 单机Mongo复制集安装配置(数据库版本:4.x)

      官方文档: https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/#dep ...

  8. AWS中国EC2 公网IP登录免pemKEY修改shh 配置文件

    个人使用记录 1:KEY 授权 chmod 400 VPN.pem 2:连接 ssh -i "VPN.pem" ubuntu@ec2-54-183-119-93.us-west-1 ...

  9. 升级glibc的感慨,

    1. 直接升级 glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务 ...

  10. python学习笔记:第五天

    day05: 1.字符串格式化输出: 1.占位符:%s (字符串)    %d(整型)   %f (浮点型) 打印格式:print("字符串为%s" %s) 2.字符串:判断是否是 ...