java專案中使用angularjs1.X,解決微信內建h5支付授權目錄配置
阿新 • • 發佈:2018-12-30
在專案中使用angularjs1.X,在微信內建瀏覽器中使用微信支付,授權目錄配置總出現XXXXXX#/XXXXX.html/XXXX未註冊,想了很多辦法,最終解決了,現在記錄一下
1、直接後臺重定向
var pay ="http://127.0.0.1/XXXX/mobilePay?id="+$scope.id
window.location.href=pay;
mobilePay控制層實現重定向到你的支付頁面response.sendRedirect("http://127.0.0.1/shopxx/mobile/index.html#/payment/"+id);
這個方法可以解決問題,但是微信ios版本的6.5.6不知為何有少部分人還是不能支付2、去除angularjs1.X URL中#,重新配置授權目錄,同時重新整理也不會出現404
1)可以使用nginx
2)使用webServer轉發
我們先修改 angularjs1專案,開啟html5模式
app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
}]);
編輯 index.html,增加base標籤
<html ng-app="app">
<head>
<base href="/"> //目錄請根據自己的實際專案配置,錯誤的時候不能正常載入js等檔案
</head>
1)使用nginx
用到的是try_files,修改nginx的配置檔案,增加try_files配置,因對nginx不怎麼熟悉,本身伺服器上配置了負載均衡等,不想再去修改配置檔案(同樣需要更具自己的專案修改路徑),所以只再本地嘗試了一下。
server {
server_name localhost;
root /;
location / {
try_files $uri $uri/ /index.html;
}
}
2)使用webServer轉發
下載相應jar包並引入
在WEB-INF/web.xml配置檔案中加入攔截器
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>//根據自己的專案修改,不是所有目錄都需要攔截,不過全攔截也無所謂,轉發規則檔案配置中可以再去除
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
在WEB-INF新建“urlrewrite.xml”轉發規則檔案<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
"http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<urlrewrite>
<rule>
<from>mobile/[a-zA-Z]+(/([a-zA-Z]|[0-9])*)*$</from>//正則表示式,根據需求自己再改改
<to>/mobile/index.html</to>
</rule>
</urlrewrite>