@@ -199,18 +199,21 @@ private String addParameter(String html, String key, String value) {
199
199
*/
200
200
protected String addCSRF (String html ) {
201
201
StringBuilder stringBuilder = new StringBuilder ();
202
- stringBuilder .append ("requestInterceptor: (request) => {\n " );
203
- stringBuilder .append ("const value = `; ${document.cookie}`;\n " );
204
- stringBuilder .append ("const parts = value.split(`; " );
205
- stringBuilder .append (swaggerUiConfig .getCsrf ().getCookieName ());
206
- stringBuilder .append ("=`);\n " );
207
- stringBuilder .append ("if (parts.length === 2)\n " );
208
- stringBuilder .append ("request.headers['" );
209
- stringBuilder .append (swaggerUiConfig .getCsrf ().getHeaderName ());
210
- stringBuilder .append ("'] = parts.pop().split(';').shift();\n " );
211
- stringBuilder .append ("return request;\n " );
212
- stringBuilder .append ("},\n " );
213
- stringBuilder .append (PRESETS );
202
+ stringBuilder .append ("requestInterceptor: (request) => {\n " );
203
+ stringBuilder .append ("\t \t \t const value = `; ${document.cookie}`;\n " );
204
+ stringBuilder .append ("\t \t \t const parts = value.split(`; " );
205
+ stringBuilder .append (swaggerUiConfig .getCsrf ().getCookieName ());
206
+ stringBuilder .append ("=`);\n " );
207
+ stringBuilder .append ("\t \t \t const currentURL = new URL(document.URL);\n " );
208
+ stringBuilder .append ("\t \t \t const requestURL = new URL(request.url, document.location.origin);\n " );
209
+ stringBuilder .append ("\t \t \t const isSameOrigin = (currentURL.protocol === requestURL.protocol && currentURL.host === requestURL.host);\n " );
210
+ stringBuilder .append ("\t \t \t if (isSameOrigin && parts.length === 2) " );
211
+ stringBuilder .append ("request.headers['" );
212
+ stringBuilder .append (swaggerUiConfig .getCsrf ().getHeaderName ());
213
+ stringBuilder .append ("'] = parts.pop().split(';').shift();\n " );
214
+ stringBuilder .append ("\t \t \t return request;\n " );
215
+ stringBuilder .append ("\t \t },\n " );
216
+ stringBuilder .append ("\t \t " + PRESETS );
214
217
return html .replace (PRESETS , stringBuilder .toString ());
215
218
}
216
219
@@ -223,14 +226,18 @@ protected String addCSRF(String html) {
223
226
protected String addCSRFLocalStorage (String html ) {
224
227
StringBuilder stringBuilder = new StringBuilder ();
225
228
stringBuilder .append ("requestInterceptor: (request) => {\n " );
226
- stringBuilder .append ("const value = window.localStorage.getItem('" );
229
+ stringBuilder .append ("t \t \t const value = window.localStorage.getItem('" );
227
230
stringBuilder .append (swaggerUiConfig .getCsrf ().getLocalStorageKey () + "');\n " );
231
+ stringBuilder .append ("t\t \t const currentURL = new URL(document.URL);\n " );
232
+ stringBuilder .append ("t\t \t const requestURL = new URL(request.url, document.location.origin);\n " );
233
+ stringBuilder .append ("t\t \t const isSameOrigin = (currentURL.protocol === requestURL.protocol && currentURL.host === requestURL.host);\n " );
234
+ stringBuilder .append ("t\t \t if (isSameOrigin) " );
228
235
stringBuilder .append ("request.headers['" );
229
236
stringBuilder .append (swaggerUiConfig .getCsrf ().getHeaderName ());
230
237
stringBuilder .append ("'] = value;\n " );
231
- stringBuilder .append ("return request;\n " );
232
- stringBuilder .append ("},\n " );
233
- stringBuilder .append (PRESETS );
238
+ stringBuilder .append ("t \t \t return request;\n " );
239
+ stringBuilder .append ("\t \t },\n " );
240
+ stringBuilder .append (" \t \t " + PRESETS );
234
241
return html .replace (PRESETS , stringBuilder .toString ());
235
242
}
236
243
0 commit comments