Access to XMLHttpRequest at 'https://192.168.0.67/mst-web/pc/sys/login' from origin 'http://127.0.0.1:8848' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
mui type= 'abort'
跨域請求
回應方須帶"Access-Control-Allow-Origin" HttpHeader
告知瀏覽器這次請求是被允許的
后台设置了过滤器,加了response.setHeader("Access-Control-Allow-Origin", "*");
不知道前台需要做什么操作
@茄子鱼:
開瀏覽器的開發者工具看看
看起來的header沒有成功加上
至少瀏覽器無法正確辨識
@RosonJ: 有一个vue的前端项目是能正常访问后台的,然后我重新开了一个mui项目用mui.js和jQuery.js的ajax请求没有成功。可能还和mui有点关系
@茄子鱼:
沒用過mui
但看網上資料提到不能對localhost及127.0.0.1發送請求(不確定真偽)
可以嘗試朝這個方向調整
@茄子鱼:
另外,https頁面對http發送請求這點也有點微妙
1.首先,看一下你的浏览器在发送请求之前是否发了OPTIONS请求。
2.再查看OPTIONS请求的结果,是否带了Access-Control-Allow-Origin。(如果没有,那么后端设置失败了。)
3.判断上面的Access-Control-Allow-Origin是否包含了你的这个域。
看到你上面说了https頁面對http發送請求,这个操作在一些浏览器是非法的行为,是会直接拦截请求的,因为会判断为不安全的操作。
@随风行云: 可是在登录之前有一个验证码图片的获取,也是在那个192.168.0.67的https请求是没有问题的。
@茄子鱼: 我之前没有在本地的HTTPS的IP实验过发HTTP请求,但如果你向一个外网HTTPS发一个外网的HTTP请求的话那么是会失败的,我之前做手机端发请求的时候遇到过。
@随风行云: 我运行vue项目前端也是本机的localhost地址,请求的192.168.0.67也是https并没有报错啊。mui项目就报这个错,所以前端做什么设置应该是能解决的吧
你的错误日志中有CORS
关键字,你前后端分离有跨域问题,
解决方式
1.前端和后端都加一下白名单
2.用jsonp进行数据传输
1、加白名单是什么意思
2、jsonp不是只能get方式请求吗
@茄子鱼:
1.就是你前端ip+端开加载后端白名单里,后端的ip和端口加你前端的白名单里,一般情况下后端加了前端不用
.2.jsonp和get请求没关系只是一直传输数据的格式
@茄子鱼: 你这个明显是跨域问题,解决起来很简单的,前端是什么框架vue?后端是java?,你和后端直接沟通就好了,把你前端部署的ip+端口告诉后端问下他们有没有加白名单,没加加下
@小小咸鱼YwY: 现在就是服务器上有发布好的前后台,然后我用本地前台vue项目运行,直接连接服务器的后台没有任何问题。然后我重新开了一个mui前端项目,用服务器的后台就不行。这个应该和前端有关系。然后我用后台代码,在自己电脑上后台运行起来(apache),用自己电脑上vue项目把地址换成本机的后台也是不行。后者可能又和我后台运行方式有关系。后台是不是要用nginx运行。后台请假了···
@茄子鱼: 你本地测试后端那边终端显示什么,返回code是多少
@茄子鱼: 你直接点我博客吧,点QQ联系问吧,你这个解决起来不难,后端是什么语言什么框架,vue设置跨域是
//前提你要确认是你这边跨域问题,还是后端跨域问题
proxyTable:{
'/': {
target: 'http://www.xxx.cn/api', //你要访问的服务器域名
changeOrigin: true, //允许跨域
pathRewrite: {
'^/': ''
}
}
}
@茄子鱼: 你本地测试可以直接F12看页面里面network里面发起请求,接受请求一些参数对不对
前台不用设置,请问楼主是后台asp.net webapi接口吗,如果是,我记得在配置文件配置就可以了
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
netcore2.1在startup方法ConfigureService如下:
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigins",
builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
Configure方法如下:
app.UseCors("AllowSpecificOrigins");
不是,他是用Java写的。不知道是不是要用nginx发布才行,里面设置了什么corsFliter什么的,应该是解决跨域问题的
@茄子鱼: java就不知道啦,额
@茄子鱼: 我是net后台,哈哈
@花开花落-2014: 谢谢哦
跨域了, 用Nginx 代理一下端口,或者就是大伙们说的, 后端 设置一下允许跨域