瀏覽代碼

fix: cors & #281

Timothy J. Baek 1 年之前
父節點
當前提交
0ae57b5ae1
共有 5 個文件被更改,包括 20 次插入49 次删除
  1. 9 0
      backend/apps/ollama/main.py
  2. 1 1
      backend/dev.sh
  3. 2 6
      src/lib/components/chat/Messages.svelte
  4. 7 6
      src/lib/constants.ts
  5. 1 36
      src/routes/(app)/c/[id]/+page.svelte

+ 9 - 0
backend/apps/ollama/main.py

@@ -61,6 +61,13 @@ def proxy(path):
 
     r = None
 
+    del headers["Host"]
+    del headers["Authorization"]
+    del headers["Origin"]
+    del headers["Referer"]
+
+    print(headers)
+
     try:
         # Make a request to the target server
         r = requests.request(
@@ -86,8 +93,10 @@ def proxy(path):
 
         return response
     except Exception as e:
+        print(e)
         error_detail = "Ollama WebUI: Server Connection Error"
         if r != None:
+            print(r.text)
             res = r.json()
             if "error" in res:
                 error_detail = f"Ollama: {res['error']}"

+ 1 - 1
backend/dev.sh

@@ -1 +1 @@
-uvicorn main:app --port 8080 --reload
+uvicorn main:app --port 8080 --host 0.0.0.0 --reload

+ 2 - 6
src/lib/components/chat/Messages.svelte

@@ -83,7 +83,7 @@
 		blocks.forEach((block) => {
 			// only add button if browser supports Clipboard API
 
-			if (navigator.clipboard && block.childNodes.length < 2 && block.id !== 'user-message') {
+			if (block.childNodes.length < 2 && block.id !== 'user-message') {
 				let code = block.querySelector('code');
 				code.style.borderTopRightRadius = 0;
 				code.style.borderTopLeftRadius = 0;
@@ -121,10 +121,6 @@
 				topBarDiv.appendChild(button);
 
 				block.prepend(topBarDiv);
-
-				// button.addEventListener('click', async () => {
-				// 	await copyCode(block, button);
-				// });
 			}
 		});
 
@@ -132,7 +128,7 @@
 			let code = block.querySelector('code');
 			let text = code.innerText;
 
-			await navigator.clipboard.writeText(text);
+			await copyToClipboard(text);
 
 			// visual feedback that task is completed
 			button.innerText = 'Copied!';

+ 7 - 6
src/lib/constants.ts

@@ -1,12 +1,13 @@
 import { dev, browser } from '$app/environment';
 import { PUBLIC_API_BASE_URL } from '$env/static/public';
 
-export const OLLAMA_API_BASE_URL =
-	PUBLIC_API_BASE_URL === ''
-		? browser
-			? `http://${location.hostname}:11434/api`
-			: `http://localhost:11434/api`
-		: PUBLIC_API_BASE_URL;
+export const OLLAMA_API_BASE_URL = dev
+	? `http://${location.hostname}:8080/ollama/api`
+	: PUBLIC_API_BASE_URL === ''
+	? browser
+		? `http://${location.hostname}:11434/api`
+		: `http://localhost:11434/api`
+	: PUBLIC_API_BASE_URL;
 
 export const WEBUI_BASE_URL = dev ? `http://${location.hostname}:8080` : ``;
 export const WEBUI_API_BASE_URL = `${WEBUI_BASE_URL}/api/v1`;

+ 1 - 36
src/routes/(app)/c/[id]/+page.svelte

@@ -4,7 +4,7 @@
 
 	import { OLLAMA_API_BASE_URL } from '$lib/constants';
 	import { onMount, tick } from 'svelte';
-	import { convertMessagesToHistory, splitStream } from '$lib/utils';
+	import { convertMessagesToHistory, copyToClipboard, splitStream } from '$lib/utils';
 	import { goto } from '$app/navigation';
 	import { config, models, modelfiles, user, settings, db, chats, chatId } from '$lib/stores';
 
@@ -113,41 +113,6 @@
 		}
 	};
 
-	const copyToClipboard = (text) => {
-		if (!navigator.clipboard) {
-			var textArea = document.createElement('textarea');
-			textArea.value = text;
-
-			// Avoid scrolling to bottom
-			textArea.style.top = '0';
-			textArea.style.left = '0';
-			textArea.style.position = 'fixed';
-
-			document.body.appendChild(textArea);
-			textArea.focus();
-			textArea.select();
-
-			try {
-				var successful = document.execCommand('copy');
-				var msg = successful ? 'successful' : 'unsuccessful';
-				console.log('Fallback: Copying text command was ' + msg);
-			} catch (err) {
-				console.error('Fallback: Oops, unable to copy', err);
-			}
-
-			document.body.removeChild(textArea);
-			return;
-		}
-		navigator.clipboard.writeText(text).then(
-			function () {
-				console.log('Async: Copying to clipboard was successful!');
-			},
-			function (err) {
-				console.error('Async: Could not copy text: ', err);
-			}
-		);
-	};
-
 	//////////////////////////
 	// Ollama functions
 	//////////////////////////