diff --git a/src/main/java/com/pt/controller/ResourceController.java b/src/main/java/com/pt/controller/ResourceController.java
index 2f75af6..e405ef2 100644
--- a/src/main/java/com/pt/controller/ResourceController.java
+++ b/src/main/java/com/pt/controller/ResourceController.java
@@ -69,8 +69,6 @@
     public ResponseEntity<?> publishResource(
             @RequestHeader("token") String token,
             @RequestParam("username") String username,
-            @RequestParam("size") double size,
-            @RequestParam("name") String name,
             @RequestParam("description") String description,
             @RequestParam("torrent") MultipartFile torrentFile) {
 
@@ -89,7 +87,8 @@
 
         try {
             // 传入种子文件字节，同时传入资源其他信息
-            resourceService.publishResource(name, description, username, size, torrentFile.getBytes());
+            System.out.println("name" + torrentFile.getOriginalFilename());
+            resourceService.publishResource(torrentFile.getOriginalFilename(), description, username, torrentFile.getSize(), torrentFile.getBytes());
         } catch (Exception e) {
             ans.put("result", "Failed to publish resource: " + e.getMessage());
             return ResponseEntity.status(500).body(ans);
@@ -104,14 +103,14 @@
 
     @GetMapping("/get/{resourceId}")
     public ResponseEntity<?> getResourceById(@PathVariable("resourceId") int resourceId,
-                                              @RequestHeader("token") String token,
+//                                              @RequestHeader("token") String token,
                                               @RequestParam("username") String username) {
 
         Map<String, Object> ans = new HashMap<>();
-        if(!JWTUtils.checkToken(token, username, Constants.UserRole.USER)) {
-            ans.put("message", "Invalid token");
-            return ResponseEntity.badRequest().body(ans);
-        }
+//        if(!JWTUtils.checkToken(token, username, Constants.UserRole.USER)) {
+//            ans.put("message", "Invalid token");
+//            return ResponseEntity.badRequest().body(ans);
+//        }
 
         Resource resource = resourceService.getResourceById(resourceId);
         if (resource == null) {
@@ -122,14 +121,14 @@
 
     @GetMapping("/download/{resourceId}")
     public ResponseEntity<?> downloadResource(@PathVariable("resourceId") int resourceId,
-                                              @RequestHeader("token") String token,
+//                                              @RequestHeader("token") String token,
                                               @RequestParam("username") String username) throws IOException {
 
         Map<String, Object> ans = new HashMap<>();
-        if(!JWTUtils.checkToken(token, username, Constants.UserRole.USER)) {
-            ans.put("message", "Invalid token");
-            return ResponseEntity.badRequest().body(ans);
-        }
+//        if(!JWTUtils.checkToken(token, username, Constants.UserRole.USER)) {
+//            ans.put("message", "Invalid token");
+//            return ResponseEntity.badRequest().body(ans);
+//        }
 
         User user = userService.findByUsername(username);
         if (user == null) {
diff --git a/src/main/java/com/pt/controller/TorrentStatsController.java b/src/main/java/com/pt/controller/TorrentStatsController.java
index 63e4c72..83e8051 100644
--- a/src/main/java/com/pt/controller/TorrentStatsController.java
+++ b/src/main/java/com/pt/controller/TorrentStatsController.java
@@ -9,6 +9,7 @@
 
 @RestController
 @RequestMapping("/api/stats")
+@CrossOrigin(origins = "*")
 public class TorrentStatsController {
 
     @Autowired
diff --git a/src/main/java/com/pt/controller/TrackerController.java b/src/main/java/com/pt/controller/TrackerController.java
index 56c0867..f2a75e3 100644
--- a/src/main/java/com/pt/controller/TrackerController.java
+++ b/src/main/java/com/pt/controller/TrackerController.java
@@ -21,13 +21,16 @@
     // tracker相应bt客户端的announce请求
     @PostMapping("/announce")
     public void announceByPost(
-            @RequestParam("info_hash") String infoHash,
-            @RequestParam("peer_id") String peerId,
-            @RequestParam("port") int port,
+            @RequestBody Map<String, String> body,
             HttpServletRequest request,
             HttpServletResponse response
     ) throws IOException {
         try {
+
+            String infoHash = body.get("info_hash");
+            String peerId = body.get("peer_id");
+            int port = Integer.parseInt(body.get("port"));
+
             String ip = request.getRemoteAddr();
 
             // 将参数封装为 Map 传给服务层（也可以直接传对象）
