前端为vue,部署到apache上,后端为java的网页程序,怎么将https的前端连接到http的后端上,访问后端的数据呢?
这是控制台的报错信息
_Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR
Uncaught (in promise) Error: Network Error createError.js:16
at t.exports (chunk-vendors.e8a2230e.js:7:67747)
at XMLHttpRequest.f.onerror (chunk-vendors.e8a2230e.js:69:30491)****_
这是http.js的代码
import axios from 'axios'
export const baseUrl = "https://*********/dataset";
// create axios instance
const instance = axios.create({
baseURL: baseUrl,
// withCredentials: true,
timeout: 15000
});
//request interceptors
instance.interceptors.request.use(function (config) {
return config;
}, function (error) {
// reject
return Promise.reject(error);
});
//response interceptors
instance.interceptors.response.use(function (response) {
return response.data;
}, function (error) {
// reject
return Promise.reject(error);
});
export default function (method, url, data = null) {
console.log("http.js",data);
method = method.toLowerCase();
if (method === 'post') {
return instance.post(url, data)
} else if (method === 'get') {
return instance.get(url, { params: data })
} else if (method === 'delete') {
return instance.delete(url, data)
}else if(method === 'put'){
return instance.put(url,data)
}else{
console.error('unknown method '+method)
return false
}
}
这是httpd-vhosts.conf
# Virtual Hosts
#
# Required modules: mod_log_config
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName diesel.******
Redirect permanent "/" "https://diesel.********"
#DocumentRoot "D:/workspaceFinalAdmin/workspaceFinal/dataset-web/dist"
</VirtualHost>
<VirtualHost *:80>
ServerName neuron.*********
Redirect permanent "/" "https://neuron.********"
#DocumentRoot "D:/NEURON/Software/neuron-treeviz/neuron-treeviz/web/frontend/dist"
#Redirect permanent "/" "https://localhost/"
</VirtualHost>
<VirtualHost *:443>
#<VirtualHost _default_:443>
#Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
ServerName *******
#RewriteEngine On
#RewriteRule ^ http://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
#Redirect "/" "https://*******"
DocumentRoot "D:/NEURON/Software/neuron-treeviz/neuron-treeviz/web/frontend/dist"
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" combined
<Directory "D:/NEURON/Software/neuron-treeviz/neuron-treeviz/web/frontend/dist">
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile "D:/NEURON/SSL certificates/**********.crt"
SSLCertificateKeyFile "D:/NEURON/SSL certificates/**********。key"
SSLCertificateChainFile "D:/NEURON/SSL certificates/DigiCertCA.crt"
<Location "/api">
ProxyPass "http://127.0.0.1:8000"
ProxyPassReverse "http://127.0.0.1:8000"
</Location>
</VirtualHost>
<VirtualHost *:443>
#<VirtualHost _default_:443>
#Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
ServerName diesel.********
#RewriteEngine On
#RewriteRule ^ http://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
#Redirect "/" "https://***********"
DocumentRoot "D:/workspaceFinalAdmin/workspaceFinal/dataset-web/dist"
#ErrorLog "logs/localhost-error_diesel.log"
#CustomLog "logs/localhost-access_diesel.log" combined
<Directory "D:/workspaceFinalAdmin/workspaceFinal/dataset-web/dist">
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile "D:/DIESEL/SSL certificates/**********.crt"
SSLCertificateKeyFile "D:/DIESEL/SSL certificates/**********.key"
SSLCertificateChainFile "D:/DIESEL/SSL certificates/DigiCertCA.crt"
<Location "/api">
ProxyPass "http://127.0.0.1:3000"
ProxyPassReverse "http://127.0.0.1:3000"
</Location>
</VirtualHost>
看下是这个原因吗
https://blog.csdn.net/abc409944643/article/details/102212421
让后台同时支持http和https访问啊
把后端改造一下支持HTTPS,
例如使用nginx代理配置同时支持http和https,找一下运维大大,分分钟帮你搞定,需要配置SSL证书
httpd修改参考,httpd使用较少,具体参数问友再上网查下
全站重定向多个页面:
<VirtualHost *:80>
ServerName w1.com
RedirectMatch ^/(.*)$ http://w2.com/$1
</VirtualHost>
http重定向https:
<VirtualHost *:80>
ServerName www.w1.com
ServerAlias w1.com
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
看看这个能不能用
前后端放一个服务器不就行了
后端接口域名加个https证书就好了
在反代设置文件里面对http请求进行转发,转发到https。虽然我不懂Apache的配置怎么写,下面好像有人写了,可以用一下。这样的话会浪费一次请求,在很卡的情况下用户体验会几乎炸掉。
实在不行就在放前端的服务器那里转发一份后端api。
正常部署是在服务器部署的应用上进行SSL证书卸载了,前后端都是在内部局域网,内部之间就不走https了。
你应该申请个https证书,在apache上配置SSL证书卸载。
用nginx 做反向代理,前端访问nginx走HTTPS,nginx代理访问后端走http。
可以用代理来帮你再转发一次,前端访问HTTPS,代理访问后端用http
其实楼上已经不少答案了,根据自己的需求进行设置测试就好。
还是反向代理解决,用nginx搭建https访问,代理转发http。实现从https请求到http请求的转换。
使用nginx或者apache都可以,配置跨域代理,当然vue本地也可以,好像在conf文件夹下配置,百度找一下我记得有
1、我记得tomcat可以将80默认转到443端口(强制http转https),相反应该也是可以的吧;
2、域名强制重定向;
连不了,是浏览器决定的,你在后端用caddy弄成https也可以的。
你把后端服务代理到某个域名下配置443和SSL证书,就成https的了,前端调你代理的域名就可以了
在nginx里配置两个服务,一个http的一个https的
一般是通过网页json数据进行传递的网页端设置一个接收器进行接受json数据
楼上说得很清楚,使用nginx或者apache都可以
这个很明显就是跨域的问题!
前端处理,做个代理,转到对应的后端
后端处理,把http转为https的下级目录即可!