dify 部分接口跨域 #21120

Closed
opened 2026-02-21 20:10:51 -05:00 by yindo · 14 comments
Owner

Originally created by @lij82304885 on GitHub (Dec 17, 2025).

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • Please do not modify this template :) and fill in all the required fields.

1. Is this request related to a challenge you're experiencing? Tell me about your story.

:8080/#/:1 Access to XMLHttpRequest at 'http://192.168.199.195:8011/v1/messages/86d14c0c-f250-4a04-b76c-d1b46973c08c/suggested?user=abc-123' from origin 'http://192.168.199.49:8080/' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute. 局域网调用 为什么访问chat-messages接口不跨域,访问messages就跨域

2. Additional context or comments

No response

3. Can you help us with this feature?

  • I am interested in contributing to this feature.
Originally created by @lij82304885 on GitHub (Dec 17, 2025). ### Self Checks - [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542). - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones. - [x] I confirm that I am using English to submit this report, otherwise it will be closed. - [x] Please do not modify this template :) and fill in all the required fields. ### 1. Is this request related to a challenge you're experiencing? Tell me about your story. :8080/#/:1 Access to XMLHttpRequest at 'http://192.168.199.195:8011/v1/messages/86d14c0c-f250-4a04-b76c-d1b46973c08c/suggested?user=abc-123' from origin 'http://192.168.199.49:8080/' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute. 局域网调用 为什么访问chat-messages接口不跨域,访问messages就跨域 ### 2. Additional context or comments _No response_ ### 3. Can you help us with this feature? - [ ] I am interested in contributing to this feature.
yindo added the 🐞 bug label 2026-02-21 20:10:51 -05:00
yindo closed this issue 2026-02-21 20:10:51 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Dec 17, 2025):

The CORS issue with the /messages endpoint happens because its API blueprint (service_api_bp) does not have supports_credentials=True set in the Flask-CORS configuration, so credentialed requests (with withCredentials: true) do not get the required Access-Control-Allow-Credentials: true header in the response. In contrast, endpoints like /chat-messages are under a blueprint (web_bp) that explicitly enables credential support, which is why those requests succeed without CORS errors. You can see the difference in how CORS is applied to these blueprints here.

To fix this, update the CORS configuration for service_api_bp to include supports_credentials=True, and make sure your allowed origins are set correctly in your environment variables (for example, WEB_API_CORS_ALLOW_ORIGINS). If your frontend and backend are on different subdomains, set COOKIE_DOMAIN to your top-level domain so cookies work properly across both apps. More details on these settings are in the environment and README docs here.

Let me know if you need a code example or more details on where to make these changes!

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 17, 2025): <!-- Answer --> The CORS issue with the `/messages` endpoint happens because its API blueprint (`service_api_bp`) does not have `supports_credentials=True` set in the Flask-CORS configuration, so credentialed requests (with `withCredentials: true`) do not get the required `Access-Control-Allow-Credentials: true` header in the response. In contrast, endpoints like `/chat-messages` are under a blueprint (`web_bp`) that explicitly enables credential support, which is why those requests succeed without CORS errors. You can see the difference in how CORS is applied to these blueprints [here](https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/extensions/ext_blueprints.py#L12-L50). To fix this, update the CORS configuration for `service_api_bp` to include `supports_credentials=True`, and make sure your allowed origins are set correctly in your environment variables (for example, `WEB_API_CORS_ALLOW_ORIGINS`). If your frontend and backend are on different subdomains, set `COOKIE_DOMAIN` to your top-level domain so cookies work properly across both apps. More details on these settings are in the environment and README docs [here](https://github.com/langgenius/dify/pull/28318). Let me know if you need a code example or more details on where to make these changes! <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/cf7db732-b10e-4a97-a8f1-ac335f7077a5?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/cf7db732-b10e-4a97-a8f1-ac335f7077a5?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/cf7db732-b10e-4a97-a8f1-ac335f7077a5?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/cf7db732-b10e-4a97-a8f1-ac335f7077a5?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/cf7db732-b10e-4a97-a8f1-ac335f7077a5?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/cf7db732-b10e-4a97-a8f1-ac335f7077a5?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/cf7db732-b10e-4a97-a8f1-ac335f7077a5?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=The%20CORS%20issue%20with%20the%20%60/messages%60%20endpoint%20happens%20because%20its%20API%20blueprint%20%28%60service_api_bp%60%29%20does%20not%20have%20%60supports_credentials%3DTrue%60%20set%20in%20the%20Flask-CORS%20configuration%2C%20so%20credentialed%20requests%20%28with%20%60withCredentials%3A%20true%60%29%20do%20not%20get%20the%20required%20%60Access-Control-Allow-Credentials%3A%20true%60%20header%20in%20the%20response.%20In%20contrast%2C%20endpoints%20like%20%60/chat-messages%60%20are%20under%20a%20blueprint%20%28%60web_bp%60%29%20that%20explicitly%20enables%20credential%20support%2C%20which%20is%20why%20those%20requests%20succeed%20without%20CORS%20errors.%20You%20can%20see%20the%20difference%20in%20how%20CORS%20is%20applied%20to%20these%20blueprints%20%5Bhere%5D%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/extensions/ext_blueprints.py%23L12-L50%29.%0A%0ATo%20fix%20this%2C%20update%20the%20CORS%20configuration%20for%20%60service_api_bp%60%20to%20include%20%60supports_credentials%3DTrue%60%2C%20and%20make%20sure%20your%20allowed%20origins%20are%20set%20correctly%20in%20your%20environment%20variables%20%28for%20example%2C%20%60WEB_API_CORS_ALLOW_ORIGINS%60%29.%20If%20your%20frontend%20and%20backend%20are%20on%20different%20subdomains%2C%20set%20%60COOKIE_DOMAIN%60%20to%20your%20top-level%20domain%20so%20cookies%20work%20properly%20across%20both%20apps.%20More%20details%20on%20these%20settings%20are%20in%20the%20environment%20and%20README%20docs%20%5Bhere%5D%28https%3A//github.com/langgenius/dify/pull/28318%29.%0A%0ALet%20me%20know%20if%20you%20need%20a%20code%20example%20or%20more%20details%20on%20where%20to%20make%20these%20changes%21)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29807)
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

怎么配置 service_api_bp 允许跨域 请给我个代码 @dosu

@lij82304885 commented on GitHub (Dec 17, 2025): 怎么配置 service_api_bp 允许跨域 请给我个代码 @dosu
Author
Owner

@dosubot[bot] commented on GitHub (Dec 17, 2025):

你可以这样配置 service_api_bp 允许跨域并支持携带凭证(如 cookie):

api/extensions/ext_blueprints.py 文件里,找到如下代码(大约在 31-61 行):

_apply_cors_once(
    service_api_bp,
    allow_headers=list(SERVICE_API_HEADERS),
    methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"],
    expose_headers=list(EXPOSED_HEADERS),
)

改成如下形式,增加 supports_credentials=Trueresources 参数(指定允许的前端 origin,通常用环境变量 WEB_API_CORS_ALLOW_ORIGINS):

_apply_cors_once(
    service_api_bp,
    resources={r"/*": {"origins": dify_config.WEB_API_CORS_ALLOW_ORIGINS}},
    supports_credentials=True,
    allow_headers=list(SERVICE_API_HEADERS),
    methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"],
    expose_headers=list(EXPOSED_HEADERS),
)

这样配置后,/v1/messages 相关接口就会返回 Access-Control-Allow-Credentials: true,支持带凭证的跨域请求了。
记得设置好环境变量 WEB_API_CORS_ALLOW_ORIGINS,比如:

WEB_API_CORS_ALLOW_ORIGINS=http://你的前端域名:端口

如果前后端在不同子域,建议设置 COOKIE_DOMAIN 为顶级域名,保证 cookie 能共享。

参考:相关源码

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 17, 2025): <!-- Answer --> 你可以这样配置 service_api_bp 允许跨域并支持携带凭证(如 cookie): 在 `api/extensions/ext_blueprints.py` 文件里,找到如下代码(大约在 31-61 行): ```python _apply_cors_once( service_api_bp, allow_headers=list(SERVICE_API_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], expose_headers=list(EXPOSED_HEADERS), ) ``` 改成如下形式,增加 `supports_credentials=True` 和 `resources` 参数(指定允许的前端 origin,通常用环境变量 `WEB_API_CORS_ALLOW_ORIGINS`): ```python _apply_cors_once( service_api_bp, resources={r"/*": {"origins": dify_config.WEB_API_CORS_ALLOW_ORIGINS}}, supports_credentials=True, allow_headers=list(SERVICE_API_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], expose_headers=list(EXPOSED_HEADERS), ) ``` 这样配置后,/v1/messages 相关接口就会返回 `Access-Control-Allow-Credentials: true`,支持带凭证的跨域请求了。 记得设置好环境变量 `WEB_API_CORS_ALLOW_ORIGINS`,比如: ``` WEB_API_CORS_ALLOW_ORIGINS=http://你的前端域名:端口 ``` 如果前后端在不同子域,建议设置 `COOKIE_DOMAIN` 为顶级域名,保证 cookie 能共享。 参考:[相关源码](https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/extensions/ext_blueprints.py#L31-L61) <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/0390bff4-c195-4c04-af88-f8479088179e?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/0390bff4-c195-4c04-af88-f8479088179e?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/0390bff4-c195-4c04-af88-f8479088179e?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/0390bff4-c195-4c04-af88-f8479088179e?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/0390bff4-c195-4c04-af88-f8479088179e?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/0390bff4-c195-4c04-af88-f8479088179e?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/0390bff4-c195-4c04-af88-f8479088179e?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=%E4%BD%A0%E5%8F%AF%E4%BB%A5%E8%BF%99%E6%A0%B7%E9%85%8D%E7%BD%AE%20service_api_bp%20%E5%85%81%E8%AE%B8%E8%B7%A8%E5%9F%9F%E5%B9%B6%E6%94%AF%E6%8C%81%E6%90%BA%E5%B8%A6%E5%87%AD%E8%AF%81%EF%BC%88%E5%A6%82%20cookie%EF%BC%89%EF%BC%9A%0A%0A%E5%9C%A8%20%60api/extensions/ext_blueprints.py%60%20%E6%96%87%E4%BB%B6%E9%87%8C%EF%BC%8C%E6%89%BE%E5%88%B0%E5%A6%82%E4%B8%8B%E4%BB%A3%E7%A0%81%EF%BC%88%E5%A4%A7%E7%BA%A6%E5%9C%A8%2031-61%20%E8%A1%8C%EF%BC%89%EF%BC%9A%0A%0A%60%60%60python%0A_apply_cors_once%28%0A%20%20%20%20service_api_bp%2C%0A%20%20%20%20allow_headers%3Dlist%28SERVICE_API_HEADERS%29%2C%0A%20%20%20%20methods%3D%5B%22GET%22%2C%20%22PUT%22%2C%20%22POST%22%2C%20%22DELETE%22%2C%20%22OPTIONS%22%2C%20%22PATCH%22%5D%2C%0A%20%20%20%20expose_headers%3Dlist%28EXPOSED_HEADERS%29%2C%0A%29%0A%60%60%60%0A%0A%E6%94%B9%E6%88%90%E5%A6%82%E4%B8%8B%E5%BD%A2%E5%BC%8F%EF%BC%8C%E5%A2%9E%E5%8A%A0%20%60supports_credentials%3DTrue%60%20%E5%92%8C%20%60resources%60%20%E5%8F%82%E6%95%B0%EF%BC%88%E6%8C%87%E5%AE%9A%E5%85%81%E8%AE%B8%E7%9A%84%E5%89%8D%E7%AB%AF%20origin%EF%BC%8C%E9%80%9A%E5%B8%B8%E7%94%A8%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%20%60WEB_API_CORS_ALLOW_ORIGINS%60%EF%BC%89%EF%BC%9A%0A%0A%60%60%60python%0A_apply_cors_once%28%0A%20%20%20%20service_api_bp%2C%0A%20%20%20%20resources%3D%7Br%22/%2A%22%3A%20%7B%22origins%22%3A%20dify_config.WEB_API_CORS_ALLOW_ORIGINS%7D%7D%2C%0A%20%20%20%20supports_credentials%3DTrue%2C%0A%20%20%20%20allow_headers%3Dlist%28SERVICE_API_HEADERS%29%2C%0A%20%20%20%20methods%3D%5B%22GET%22%2C%20%22PUT%22%2C%20%22POST%22%2C%20%22DELETE%22%2C%20%22OPTIONS%22%2C%20%22PATCH%22%5D%2C%0A%20%20%20%20expose_headers%3Dlist%28EXPOSED_HEADERS%29%2C%0A%29%0A%60%60%60%0A%0A%E8%BF%99%E6%A0%B7%E9%85%8D%E7%BD%AE%E5%90%8E%EF%BC%8C/v1/messages%20%E7%9B%B8%E5%85%B3%E6%8E%A5%E5%8F%A3%E5%B0%B1%E4%BC%9A%E8%BF%94%E5%9B%9E%20%60Access-Control-Allow-Credentials%3A%20true%60%EF%BC%8C%E6%94%AF%E6%8C%81%E5%B8%A6%E5%87%AD%E8%AF%81%E7%9A%84%E8%B7%A8%E5%9F%9F%E8%AF%B7%E6%B1%82%E4%BA%86%E3%80%82%20%20%0A%E8%AE%B0%E5%BE%97%E8%AE%BE%E7%BD%AE%E5%A5%BD%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%20%60WEB_API_CORS_ALLOW_ORIGINS%60%EF%BC%8C%E6%AF%94%E5%A6%82%EF%BC%9A%0A%0A%60%60%60%0AWEB_API_CORS_ALLOW_ORIGINS%3Dhttp%3A//%E4%BD%A0%E7%9A%84%E5%89%8D%E7%AB%AF%E5%9F%9F%E5%90%8D%3A%E7%AB%AF%E5%8F%A3%0A%60%60%60%0A%0A%E5%A6%82%E6%9E%9C%E5%89%8D%E5%90%8E%E7%AB%AF%E5%9C%A8%E4%B8%8D%E5%90%8C%E5%AD%90%E5%9F%9F%EF%BC%8C%E5%BB%BA%E8%AE%AE%E8%AE%BE%E7%BD%AE%20%60COOKIE_DOMAIN%60%20%E4%B8%BA%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D%EF%BC%8C%E4%BF%9D%E8%AF%81%20cookie%20%E8%83%BD%E5%85%B1%E4%BA%AB%E3%80%82%0A%0A%E5%8F%82%E8%80%83%EF%BC%9A%5B%E7%9B%B8%E5%85%B3%E6%BA%90%E7%A0%81%5D%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/extensions/ext_blueprints.py%23L31-L61%29)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29807)
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

WEB_API_CORS_ALLOW_ORIGINS 是在哪个文件设置 @dosu

@lij82304885 commented on GitHub (Dec 17, 2025): WEB_API_CORS_ALLOW_ORIGINS 是在哪个文件设置 @dosu
Author
Owner

@dosubot[bot] commented on GitHub (Dec 17, 2025):

WEB_API_CORS_ALLOW_ORIGINS 需要在 Dify 的环境变量文件中设置。常见的设置位置有:

  1. 本地开发时,在 /dify/api/.env 文件里添加或修改,例如:
    WEB_API_CORS_ALLOW_ORIGINS=http://localhost:3000,*
    
  2. 如果用 Docker 部署,可以在 docker/.env 文件里设置,或者直接在 docker/docker-compose.yaml 的 environment 部分配置:
    WEB_API_CORS_ALLOW_ORIGINS: ${WEB_API_CORS_ALLOW_ORIGINS:-*}
    

修改后需要重启 Dify 服务才能生效。开发环境可以用 * 允许所有来源,生产环境建议只写可信域名,比如:

WEB_API_CORS_ALLOW_ORIGINS=http://你的前端域名:端口

参考:官方讨论docker/README.md

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 17, 2025): <!-- Answer --> WEB_API_CORS_ALLOW_ORIGINS 需要在 Dify 的环境变量文件中设置。常见的设置位置有: 1. 本地开发时,在 /dify/api/.env 文件里添加或修改,例如: ``` WEB_API_CORS_ALLOW_ORIGINS=http://localhost:3000,* ``` 2. 如果用 Docker 部署,可以在 docker/.env 文件里设置,或者直接在 docker/docker-compose.yaml 的 environment 部分配置: ``` WEB_API_CORS_ALLOW_ORIGINS: ${WEB_API_CORS_ALLOW_ORIGINS:-*} ``` 修改后需要重启 Dify 服务才能生效。开发环境可以用 * 允许所有来源,生产环境建议只写可信域名,比如: ``` WEB_API_CORS_ALLOW_ORIGINS=http://你的前端域名:端口 ``` 参考:[官方讨论](https://github.com/langgenius/dify/discussions/29261) 和 [docker/README.md](https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/docker/README.md#L10-L117) <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/4ad86306-5fa6-4974-9651-c8ed795fb92b?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/4ad86306-5fa6-4974-9651-c8ed795fb92b?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/4ad86306-5fa6-4974-9651-c8ed795fb92b?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/4ad86306-5fa6-4974-9651-c8ed795fb92b?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/4ad86306-5fa6-4974-9651-c8ed795fb92b?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/4ad86306-5fa6-4974-9651-c8ed795fb92b?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/4ad86306-5fa6-4974-9651-c8ed795fb92b?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=WEB_API_CORS_ALLOW_ORIGINS%20%E9%9C%80%E8%A6%81%E5%9C%A8%20Dify%20%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%96%87%E4%BB%B6%E4%B8%AD%E8%AE%BE%E7%BD%AE%E3%80%82%E5%B8%B8%E8%A7%81%E7%9A%84%E8%AE%BE%E7%BD%AE%E4%BD%8D%E7%BD%AE%E6%9C%89%EF%BC%9A%0A%0A1.%20%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91%E6%97%B6%EF%BC%8C%E5%9C%A8%20/dify/api/.env%20%E6%96%87%E4%BB%B6%E9%87%8C%E6%B7%BB%E5%8A%A0%E6%88%96%E4%BF%AE%E6%94%B9%EF%BC%8C%E4%BE%8B%E5%A6%82%EF%BC%9A%0A%20%20%20%60%60%60%0A%20%20%20WEB_API_CORS_ALLOW_ORIGINS%3Dhttp%3A//localhost%3A3000%2C%2A%0A%20%20%20%60%60%60%0A2.%20%E5%A6%82%E6%9E%9C%E7%94%A8%20Docker%20%E9%83%A8%E7%BD%B2%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%9C%A8%20docker/.env%20%E6%96%87%E4%BB%B6%E9%87%8C%E8%AE%BE%E7%BD%AE%EF%BC%8C%E6%88%96%E8%80%85%E7%9B%B4%E6%8E%A5%E5%9C%A8%20docker/docker-compose.yaml%20%E7%9A%84%20environment%20%E9%83%A8%E5%88%86%E9%85%8D%E7%BD%AE%EF%BC%9A%0A%20%20%20%60%60%60%0A%20%20%20WEB_API_CORS_ALLOW_ORIGINS%3A%20%24%7BWEB_API_CORS_ALLOW_ORIGINS%3A-%2A%7D%0A%20%20%20%60%60%60%0A%0A%E4%BF%AE%E6%94%B9%E5%90%8E%E9%9C%80%E8%A6%81%E9%87%8D%E5%90%AF%20Dify%20%E6%9C%8D%E5%8A%A1%E6%89%8D%E8%83%BD%E7%94%9F%E6%95%88%E3%80%82%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E5%8F%AF%E4%BB%A5%E7%94%A8%20%2A%20%E5%85%81%E8%AE%B8%E6%89%80%E6%9C%89%E6%9D%A5%E6%BA%90%EF%BC%8C%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%BB%BA%E8%AE%AE%E5%8F%AA%E5%86%99%E5%8F%AF%E4%BF%A1%E5%9F%9F%E5%90%8D%EF%BC%8C%E6%AF%94%E5%A6%82%EF%BC%9A%0A%60%60%60%0AWEB_API_CORS_ALLOW_ORIGINS%3Dhttp%3A//%E4%BD%A0%E7%9A%84%E5%89%8D%E7%AB%AF%E5%9F%9F%E5%90%8D%3A%E7%AB%AF%E5%8F%A3%0A%60%60%60%0A%E5%8F%82%E8%80%83%EF%BC%9A%5B%E5%AE%98%E6%96%B9%E8%AE%A8%E8%AE%BA%5D%28https%3A//github.com/langgenius/dify/discussions/29261%29%20%E5%92%8C%20%5Bdocker/README.md%5D%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/docker/README.md%23L10-L117%29)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29807)
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

调用还是报错Access to XMLHttpRequest at 'http://192.168.199.195:8011/v1/messages/8dd8cfd5-921f-41af-8d38-0f7b7b452260/suggested?user=abc-123' from origin 'http://192.168.199.49:8080' has been blocked by CORS policy: Request header field wx-user-name is not allowed by Access-Control-Allow-Headers in preflight response.

env 配置WEB_API_CORS_ALLOW_ORIGINS=${WEB_API_CORS_ALLOW_ORIGINS:-*}

CORS(
    web_bp,
    resources={r"/*": {"origins": dify_config.WEB_API_CORS_ALLOW_ORIGINS}},
    supports_credentials=True,
    allow_headers=list(AUTHENTICATED_HEADERS),
    methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"],
    expose_headers=list(EXPOSED_HEADERS),
)
app.register_blueprint(web_bp)

@dosu 请帮忙看看哪里有错误

@lij82304885 commented on GitHub (Dec 17, 2025): 调用还是报错Access to XMLHttpRequest at 'http://192.168.199.195:8011/v1/messages/8dd8cfd5-921f-41af-8d38-0f7b7b452260/suggested?user=abc-123' from origin 'http://192.168.199.49:8080' has been blocked by CORS policy: Request header field wx-user-name is not allowed by Access-Control-Allow-Headers in preflight response. env 配置WEB_API_CORS_ALLOW_ORIGINS=${WEB_API_CORS_ALLOW_ORIGINS:-*} CORS( web_bp, resources={r"/*": {"origins": dify_config.WEB_API_CORS_ALLOW_ORIGINS}}, supports_credentials=True, allow_headers=list(AUTHENTICATED_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], expose_headers=list(EXPOSED_HEADERS), ) app.register_blueprint(web_bp) @dosu 请帮忙看看哪里有错误
Author
Owner

@dosubot[bot] commented on GitHub (Dec 17, 2025):

你的 CORS 配置问题出在 /v1/messages 这个接口属于 service_api_bp blueprint,而你贴的配置是 web_bp 的,web_bp 的设置不会影响 /v1/messages。

你遇到的 “Request header field wx-user-name is not allowed by Access-Control-Allow-Headers in preflight response” 错误,是因为 service_api_bp 的 CORS 配置里 allow_headers 没有包含 wx-user-name。默认只允许了 Content-Type、Authorization 等标准头,没有你的自定义头。

解决方法如下:

  1. 打开 api/extensions/ext_blueprints.py,找到 service_api_bp 的 CORS 配置,大概是这样:

    _apply_cors_once(
        service_api_bp,
        allow_headers=list(SERVICE_API_HEADERS),
        methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"],
        expose_headers=list(EXPOSED_HEADERS),
    )
    
  2. 修改 allow_headers,把 'wx-user-name' 加进去,比如:

    _apply_cors_once(
        service_api_bp,
        resources={r"/*": {"origins": dify_config.WEB_API_CORS_ALLOW_ORIGINS}},
        supports_credentials=True,
        allow_headers=list(SERVICE_API_HEADERS) + ["wx-user-name"],
        methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"],
        expose_headers=list(EXPOSED_HEADERS),
    )
    
  3. 保存后重启 Dify 后端服务。

这样 /v1/messages 相关接口就允许带 wx-user-name 头的跨域请求了,CORS preflight 不会再报错。参考源码

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 17, 2025): <!-- Answer --> 你的 CORS 配置问题出在 /v1/messages 这个接口属于 service_api_bp blueprint,而你贴的配置是 web_bp 的,web_bp 的设置不会影响 /v1/messages。 你遇到的 “Request header field wx-user-name is not allowed by Access-Control-Allow-Headers in preflight response” 错误,是因为 service_api_bp 的 CORS 配置里 allow_headers 没有包含 wx-user-name。默认只允许了 Content-Type、Authorization 等标准头,没有你的自定义头。 解决方法如下: 1. 打开 `api/extensions/ext_blueprints.py`,找到 service_api_bp 的 CORS 配置,大概是这样: ```python _apply_cors_once( service_api_bp, allow_headers=list(SERVICE_API_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], expose_headers=list(EXPOSED_HEADERS), ) ``` 2. 修改 allow_headers,把 'wx-user-name' 加进去,比如: ```python _apply_cors_once( service_api_bp, resources={r"/*": {"origins": dify_config.WEB_API_CORS_ALLOW_ORIGINS}}, supports_credentials=True, allow_headers=list(SERVICE_API_HEADERS) + ["wx-user-name"], methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], expose_headers=list(EXPOSED_HEADERS), ) ``` 3. 保存后重启 Dify 后端服务。 这样 /v1/messages 相关接口就允许带 wx-user-name 头的跨域请求了,CORS preflight 不会再报错。[参考源码](https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/extensions/ext_blueprints.py#L5-L51) <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/48c9c8af-c806-4967-bfa6-0a16ae62618b?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/48c9c8af-c806-4967-bfa6-0a16ae62618b?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/48c9c8af-c806-4967-bfa6-0a16ae62618b?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/48c9c8af-c806-4967-bfa6-0a16ae62618b?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/48c9c8af-c806-4967-bfa6-0a16ae62618b?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/48c9c8af-c806-4967-bfa6-0a16ae62618b?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/48c9c8af-c806-4967-bfa6-0a16ae62618b?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=%E4%BD%A0%E7%9A%84%20CORS%20%E9%85%8D%E7%BD%AE%E9%97%AE%E9%A2%98%E5%87%BA%E5%9C%A8%20/v1/messages%20%E8%BF%99%E4%B8%AA%E6%8E%A5%E5%8F%A3%E5%B1%9E%E4%BA%8E%20service_api_bp%20blueprint%EF%BC%8C%E8%80%8C%E4%BD%A0%E8%B4%B4%E7%9A%84%E9%85%8D%E7%BD%AE%E6%98%AF%20web_bp%20%E7%9A%84%EF%BC%8Cweb_bp%20%E7%9A%84%E8%AE%BE%E7%BD%AE%E4%B8%8D%E4%BC%9A%E5%BD%B1%E5%93%8D%20/v1/messages%E3%80%82%0A%0A%E4%BD%A0%E9%81%87%E5%88%B0%E7%9A%84%20%E2%80%9CRequest%20header%20field%20wx-user-name%20is%20not%20allowed%20by%20Access-Control-Allow-Headers%20in%20preflight%20response%E2%80%9D%20%E9%94%99%E8%AF%AF%EF%BC%8C%E6%98%AF%E5%9B%A0%E4%B8%BA%20service_api_bp%20%E7%9A%84%20CORS%20%E9%85%8D%E7%BD%AE%E9%87%8C%20allow_headers%20%E6%B2%A1%E6%9C%89%E5%8C%85%E5%90%AB%20wx-user-name%E3%80%82%E9%BB%98%E8%AE%A4%E5%8F%AA%E5%85%81%E8%AE%B8%E4%BA%86%20Content-Type%E3%80%81Authorization%20%E7%AD%89%E6%A0%87%E5%87%86%E5%A4%B4%EF%BC%8C%E6%B2%A1%E6%9C%89%E4%BD%A0%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E5%A4%B4%E3%80%82%0A%0A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%E5%A6%82%E4%B8%8B%EF%BC%9A%0A%0A1.%20%E6%89%93%E5%BC%80%20%60api/extensions/ext_blueprints.py%60%EF%BC%8C%E6%89%BE%E5%88%B0%20service_api_bp%20%E7%9A%84%20CORS%20%E9%85%8D%E7%BD%AE%EF%BC%8C%E5%A4%A7%E6%A6%82%E6%98%AF%E8%BF%99%E6%A0%B7%EF%BC%9A%0A%0A%20%20%20%60%60%60python%0A%20%20%20_apply_cors_once%28%0A%20%20%20%20%20%20%20service_api_bp%2C%0A%20%20%20%20%20%20%20allow_headers%3Dlist%28SERVICE_API_HEADERS%29%2C%0A%20%20%20%20%20%20%20methods%3D%5B%22GET%22%2C%20%22PUT%22%2C%20%22POST%22%2C%20%22DELETE%22%2C%20%22OPTIONS%22%2C%20%22PATCH%22%5D%2C%0A%20%20%20%20%20%20%20expose_headers%3Dlist%28EXPOSED_HEADERS%29%2C%0A%20%20%20%29%0A%20%20%20%60%60%60%0A%0A2.%20%E4%BF%AE%E6%94%B9%20allow_headers%EF%BC%8C%E6%8A%8A%20%27wx-user-name%27%20%E5%8A%A0%E8%BF%9B%E5%8E%BB%EF%BC%8C%E6%AF%94%E5%A6%82%EF%BC%9A%0A%0A%20%20%20%60%60%60python%0A%20%20%20_apply_cors_once%28%0A%20%20%20%20%20%20%20service_api_bp%2C%0A%20%20%20%20%20%20%20resources%3D%7Br%22/%2A%22%3A%20%7B%22origins%22%3A%20dify_config.WEB_API_CORS_ALLOW_ORIGINS%7D%7D%2C%0A%20%20%20%20%20%20%20supports_credentials%3DTrue%2C%0A%20%20%20%20%20%20%20allow_headers%3Dlist%28SERVICE_API_HEADERS%29%20%2B%20%5B%22wx-user-name%22%5D%2C%0A%20%20%20%20%20%20%20methods%3D%5B%22GET%22%2C%20%22PUT%22%2C%20%22POST%22%2C%20%22DELETE%22%2C%20%22OPTIONS%22%2C%20%22PATCH%22%5D%2C%0A%20%20%20%20%20%20%20expose_headers%3Dlist%28EXPOSED_HEADERS%29%2C%0A%20%20%20%29%0A%20%20%20%60%60%60%0A%0A3.%20%E4%BF%9D%E5%AD%98%E5%90%8E%E9%87%8D%E5%90%AF%20Dify%20%E5%90%8E%E7%AB%AF%E6%9C%8D%E5%8A%A1%E3%80%82%0A%0A%E8%BF%99%E6%A0%B7%20/v1/messages%20%E7%9B%B8%E5%85%B3%E6%8E%A5%E5%8F%A3%E5%B0%B1%E5%85%81%E8%AE%B8%E5%B8%A6%20wx-user-name%20%E5%A4%B4%E7%9A%84%E8%B7%A8%E5%9F%9F%E8%AF%B7%E6%B1%82%E4%BA%86%EF%BC%8CCORS%20preflight%20%E4%B8%8D%E4%BC%9A%E5%86%8D%E6%8A%A5%E9%94%99%E3%80%82%5B%E5%8F%82%E8%80%83%E6%BA%90%E7%A0%81%5D%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/extensions/ext_blueprints.py%23L5-L51%29)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29807)
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

感谢 现在不跨域了 有个新问题
这个是调用地址
http://192.168.199.195:8011/v1/messages/359b8620-674c-434a-b1ba-aed14b6ea070/suggested?user=abc-123
这是返回结果{"code":"not_found","message":"Message Not Exists.","status":404}
359b8620-674c-434a-b1ba-aed14b6ea070是 对话的message_id
这是哪里有问题 @dosu

@lij82304885 commented on GitHub (Dec 17, 2025): 感谢 现在不跨域了 有个新问题 这个是调用地址 http://192.168.199.195:8011/v1/messages/359b8620-674c-434a-b1ba-aed14b6ea070/suggested?user=abc-123 这是返回结果{"code":"not_found","message":"Message Not Exists.","status":404} 359b8620-674c-434a-b1ba-aed14b6ea070是 对话的message_id 这是哪里有问题 @dosu
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

curl --location --request GET 'http://192.168.199.195/v1/messages/{message_id}/suggested?user=abc-123
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY'
--header 'Content-Type: application/json' 调用的是 获取 [获取下一轮建议问题列表] 出的问题

@lij82304885 commented on GitHub (Dec 17, 2025): curl --location --request GET 'http://192.168.199.195/v1/messages/{message_id}/suggested?user=abc-123 \ --header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \ --header 'Content-Type: application/json' 调用的是 获取 [获取下一轮建议问题列表] 出的问题
Author
Owner

@dosubot[bot] commented on GitHub (Dec 17, 2025):

这个 404 “Message Not Exists” 错误,说明后端没有查到对应的 message_id。Dify 的 /v1/messages/{message_id}/suggested 接口会严格校验 message 必须属于当前 app、当前 user,并且消息来源(from_source)和 user 类型(EndUser/Account)也要完全匹配,否则就会报这个错。

常见原因有:

  • message_id 不存在,或者被删除了
  • message 属于别的 app、workspace 或 user
  • user 参数和创建 message 时的 user 不一致(比如 user=abc-123 不是原始消息的创建者)
  • 消息是用控制台(console)创建的,但用 API 的 EndUser 调用,或者反过来
  • 你用的 app token、user 参数、环境变量等和实际数据不一致

排查建议:

  1. 确认 message_id 是通过 API 创建的,并且 user=abc-123 是创建这条消息时用的 user。
  2. 检查 app token、user 参数、请求头等是否和创建消息时完全一致。
  3. 如果你用的是多租户/多 workspace,确保消息属于当前 app 和 workspace。
  4. 检查消息有没有被删除,或者是不是用控制台创建的(API 只能查 API 创建的消息)。
  5. 查看后端日志,能看到更详细的报错信息,有助于定位问题。

详细原理和代码可以参考:

如果还有问题,可以贴下你创建 message 的请求和参数,方便进一步定位。

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 17, 2025): <!-- Answer --> 这个 404 “Message Not Exists” 错误,说明后端没有查到对应的 message_id。Dify 的 /v1/messages/{message_id}/suggested 接口会严格校验 message 必须属于当前 app、当前 user,并且消息来源(from_source)和 user 类型(EndUser/Account)也要完全匹配,否则就会报这个错。 常见原因有: - message_id 不存在,或者被删除了 - message 属于别的 app、workspace 或 user - user 参数和创建 message 时的 user 不一致(比如 user=abc-123 不是原始消息的创建者) - 消息是用控制台(console)创建的,但用 API 的 EndUser 调用,或者反过来 - 你用的 app token、user 参数、环境变量等和实际数据不一致 排查建议: 1. 确认 message_id 是通过 API 创建的,并且 user=abc-123 是创建这条消息时用的 user。 2. 检查 app token、user 参数、请求头等是否和创建消息时完全一致。 3. 如果你用的是多租户/多 workspace,确保消息属于当前 app 和 workspace。 4. 检查消息有没有被删除,或者是不是用控制台创建的(API 只能查 API 创建的消息)。 5. 查看后端日志,能看到更详细的报错信息,有助于定位问题。 详细原理和代码可以参考: - [接口实现和校验逻辑](https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/controllers/service_api/app/message.py#L190-L228) - [消息查找和 user 校验](https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/services/message_service.py#L200-L305) - [相关社区讨论和常见原因](https://github.com/langgenius/dify/issues/17194) | [1](https://github.com/langgenius/dify/discussions/27949) 如果还有问题,可以贴下你创建 message 的请求和参数,方便进一步定位。 <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/d6e4fed3-85a0-49ff-81c7-bb81295c3020?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/d6e4fed3-85a0-49ff-81c7-bb81295c3020?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/d6e4fed3-85a0-49ff-81c7-bb81295c3020?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/d6e4fed3-85a0-49ff-81c7-bb81295c3020?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/d6e4fed3-85a0-49ff-81c7-bb81295c3020?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/d6e4fed3-85a0-49ff-81c7-bb81295c3020?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/d6e4fed3-85a0-49ff-81c7-bb81295c3020?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=%E8%BF%99%E4%B8%AA%20404%20%E2%80%9CMessage%20Not%20Exists%E2%80%9D%20%E9%94%99%E8%AF%AF%EF%BC%8C%E8%AF%B4%E6%98%8E%E5%90%8E%E7%AB%AF%E6%B2%A1%E6%9C%89%E6%9F%A5%E5%88%B0%E5%AF%B9%E5%BA%94%E7%9A%84%20message_id%E3%80%82Dify%20%E7%9A%84%20/v1/messages/%7Bmessage_id%7D/suggested%20%E6%8E%A5%E5%8F%A3%E4%BC%9A%E4%B8%A5%E6%A0%BC%E6%A0%A1%E9%AA%8C%20message%20%E5%BF%85%E9%A1%BB%E5%B1%9E%E4%BA%8E%E5%BD%93%E5%89%8D%20app%E3%80%81%E5%BD%93%E5%89%8D%20user%EF%BC%8C%E5%B9%B6%E4%B8%94%E6%B6%88%E6%81%AF%E6%9D%A5%E6%BA%90%EF%BC%88from_source%EF%BC%89%E5%92%8C%20user%20%E7%B1%BB%E5%9E%8B%EF%BC%88EndUser/Account%EF%BC%89%E4%B9%9F%E8%A6%81%E5%AE%8C%E5%85%A8%E5%8C%B9%E9%85%8D%EF%BC%8C%E5%90%A6%E5%88%99%E5%B0%B1%E4%BC%9A%E6%8A%A5%E8%BF%99%E4%B8%AA%E9%94%99%E3%80%82%0A%0A%E5%B8%B8%E8%A7%81%E5%8E%9F%E5%9B%A0%E6%9C%89%EF%BC%9A%0A%0A-%20message_id%20%E4%B8%8D%E5%AD%98%E5%9C%A8%EF%BC%8C%E6%88%96%E8%80%85%E8%A2%AB%E5%88%A0%E9%99%A4%E4%BA%86%0A-%20message%20%E5%B1%9E%E4%BA%8E%E5%88%AB%E7%9A%84%20app%E3%80%81workspace%20%E6%88%96%20user%0A-%20user%20%E5%8F%82%E6%95%B0%E5%92%8C%E5%88%9B%E5%BB%BA%20message%20%E6%97%B6%E7%9A%84%20user%20%E4%B8%8D%E4%B8%80%E8%87%B4%EF%BC%88%E6%AF%94%E5%A6%82%20user%3Dabc-123%20%E4%B8%8D%E6%98%AF%E5%8E%9F%E5%A7%8B%E6%B6%88%E6%81%AF%E7%9A%84%E5%88%9B%E5%BB%BA%E8%80%85%EF%BC%89%0A-%20%E6%B6%88%E6%81%AF%E6%98%AF%E7%94%A8%E6%8E%A7%E5%88%B6%E5%8F%B0%EF%BC%88console%EF%BC%89%E5%88%9B%E5%BB%BA%E7%9A%84%EF%BC%8C%E4%BD%86%E7%94%A8%20API%20%E7%9A%84%20EndUser%20%E8%B0%83%E7%94%A8%EF%BC%8C%E6%88%96%E8%80%85%E5%8F%8D%E8%BF%87%E6%9D%A5%0A-%20%E4%BD%A0%E7%94%A8%E7%9A%84%20app%20token%E3%80%81user%20%E5%8F%82%E6%95%B0%E3%80%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%AD%89%E5%92%8C%E5%AE%9E%E9%99%85%E6%95%B0%E6%8D%AE%E4%B8%8D%E4%B8%80%E8%87%B4%0A%0A%E6%8E%92%E6%9F%A5%E5%BB%BA%E8%AE%AE%EF%BC%9A%0A%0A1.%20%E7%A1%AE%E8%AE%A4%20message_id%20%E6%98%AF%E9%80%9A%E8%BF%87%20API%20%E5%88%9B%E5%BB%BA%E7%9A%84%EF%BC%8C%E5%B9%B6%E4%B8%94%20user%3Dabc-123%20%E6%98%AF%E5%88%9B%E5%BB%BA%E8%BF%99%E6%9D%A1%E6%B6%88%E6%81%AF%E6%97%B6%E7%94%A8%E7%9A%84%20user%E3%80%82%0A2.%20%E6%A3%80%E6%9F%A5%20app%20token%E3%80%81user%20%E5%8F%82%E6%95%B0%E3%80%81%E8%AF%B7%E6%B1%82%E5%A4%B4%E7%AD%89%E6%98%AF%E5%90%A6%E5%92%8C%E5%88%9B%E5%BB%BA%E6%B6%88%E6%81%AF%E6%97%B6%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4%E3%80%82%0A3.%20%E5%A6%82%E6%9E%9C%E4%BD%A0%E7%94%A8%E7%9A%84%E6%98%AF%E5%A4%9A%E7%A7%9F%E6%88%B7/%E5%A4%9A%20workspace%EF%BC%8C%E7%A1%AE%E4%BF%9D%E6%B6%88%E6%81%AF%E5%B1%9E%E4%BA%8E%E5%BD%93%E5%89%8D%20app%20%E5%92%8C%20workspace%E3%80%82%0A4.%20%E6%A3%80%E6%9F%A5%E6%B6%88%E6%81%AF%E6%9C%89%E6%B2%A1%E6%9C%89%E8%A2%AB%E5%88%A0%E9%99%A4%EF%BC%8C%E6%88%96%E8%80%85%E6%98%AF%E4%B8%8D%E6%98%AF%E7%94%A8%E6%8E%A7%E5%88%B6%E5%8F%B0%E5%88%9B%E5%BB%BA%E7%9A%84%EF%BC%88API%20%E5%8F%AA%E8%83%BD%E6%9F%A5%20API%20%E5%88%9B%E5%BB%BA%E7%9A%84%E6%B6%88%E6%81%AF%EF%BC%89%E3%80%82%0A5.%20%E6%9F%A5%E7%9C%8B%E5%90%8E%E7%AB%AF%E6%97%A5%E5%BF%97%EF%BC%8C%E8%83%BD%E7%9C%8B%E5%88%B0%E6%9B%B4%E8%AF%A6%E7%BB%86%E7%9A%84%E6%8A%A5%E9%94%99%E4%BF%A1%E6%81%AF%EF%BC%8C%E6%9C%89%E5%8A%A9%E4%BA%8E%E5%AE%9A%E4%BD%8D%E9%97%AE%E9%A2%98%E3%80%82%0A%0A%E8%AF%A6%E7%BB%86%E5%8E%9F%E7%90%86%E5%92%8C%E4%BB%A3%E7%A0%81%E5%8F%AF%E4%BB%A5%E5%8F%82%E8%80%83%EF%BC%9A%0A-%20%5B%E6%8E%A5%E5%8F%A3%E5%AE%9E%E7%8E%B0%E5%92%8C%E6%A0%A1%E9%AA%8C%E9%80%BB%E8%BE%91%5D%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/controllers/service_api/app/message.py%23L190-L228%29%0A-%20%5B%E6%B6%88%E6%81%AF%E6%9F%A5%E6%89%BE%E5%92%8C%20user%20%E6%A0%A1%E9%AA%8C%5D%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/services/message_service.py%23L200-L305%29%0A-%20%5B%E7%9B%B8%E5%85%B3%E7%A4%BE%E5%8C%BA%E8%AE%A8%E8%AE%BA%E5%92%8C%E5%B8%B8%E8%A7%81%E5%8E%9F%E5%9B%A0%5D%28https%3A//github.com/langgenius/dify/issues/17194%29%20%7C%20%5B1%5D%28https%3A//github.com/langgenius/dify/discussions/27949%29%0A%0A%E5%A6%82%E6%9E%9C%E8%BF%98%E6%9C%89%E9%97%AE%E9%A2%98%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%B4%B4%E4%B8%8B%E4%BD%A0%E5%88%9B%E5%BB%BA%20message%20%E7%9A%84%E8%AF%B7%E6%B1%82%E5%92%8C%E5%8F%82%E6%95%B0%EF%BC%8C%E6%96%B9%E4%BE%BF%E8%BF%9B%E4%B8%80%E6%AD%A5%E5%AE%9A%E4%BD%8D%E3%80%82)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29807)
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

await fetch('http://192.168.199.195:8011/v1/chat-messages', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': Bearer app-BOUqLo31EyvoGhGs1W7EbZrA
},
body: JSON.stringify({
inputs: imagesInput,
query: '头痛',
// query: this.inputText || this.synopsis,
// messages: this.getContextMessages(),
response_mode: 'streaming',
conversation_id: this.conversationId,
user: 'abc-123',
// conversation_id
}),
} 这个是创建的聊天,在信息返回后调用防范 获取建议问题 await this.axios({
url: 'http://192.168.199.195:8011/v1/messages/'+ this.messageId +'/suggested',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer app-x87qUGj1JY9He03r2NBv5Nu5'
},
params: {
user: 'abc-123'
},
timeout: 10000 // 超时时间10秒(接口可能耗时较长)
}).then((res) => {
console.log('下一轮建议问题列表222',res)
if(res.result) {
this.aiquestion = res.data
console.log('下一轮列表',res)
}
}).catch((error) => { });
},
@dosu

@lij82304885 commented on GitHub (Dec 17, 2025): await fetch('http://192.168.199.195:8011/v1/chat-messages', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer app-BOUqLo31EyvoGhGs1W7EbZrA` }, body: JSON.stringify({ inputs: imagesInput, query: '头痛', // query: this.inputText || this.synopsis, // messages: this.getContextMessages(), response_mode: 'streaming', conversation_id: this.conversationId, user: 'abc-123', // conversation_id }), } 这个是创建的聊天,在信息返回后调用防范 获取建议问题 await this.axios({ url: 'http://192.168.199.195:8011/v1/messages/'+ this.messageId +'/suggested', method: 'GET', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer app-x87qUGj1JY9He03r2NBv5Nu5' }, params: { user: 'abc-123' }, timeout: 10000 // 超时时间10秒(接口可能耗时较长) }).then((res) => { console.log('下一轮建议问题列表222',res) if(res.result) { this.aiquestion = res.data console.log('下一轮列表',res) } }).catch((error) => { }); }, @dosu
Author
Owner

@dosubot[bot] commented on GitHub (Dec 17, 2025):

你的 404 问题是因为创建消息和获取建议问题时用的 app token(Authorization)不一致。Dify 后端会严格校验 message_id 是否属于当前 app、user 和来源(from_source),只要 app token 不同,哪怕 user 一样,也查不到消息,会返回 "Message Not Exists"(404)【参考源码说明】(https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/services/message_service.py#L27-L306)。

正确做法:

  1. 创建聊天消息(/v1/chat-messages)和获取建议问题(/v1/messages/{message_id}/suggested)时,必须用同一个 app 的 token(Authorization: Bearer ...)。
  2. user 参数要和创建消息时完全一致。
  3. message_id 必须用 /v1/chat-messages 返回的 message_id 字段,不能用其他来源的 id。

示例流程:

// 1. 创建消息
const createRes = await fetch('http://192.168.199.195:8011/v1/chat-messages', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer app-xxxxxx' // 用同一个 token
  },
  body: JSON.stringify({
    inputs: imagesInput,
    query: '头痛',
    response_mode: 'streaming',
    conversation_id: this.conversationId,
    user: 'abc-123'
  }),
});
const data = await createRes.json();
const messageId = data.message_id;

// 2. 获取建议问题
const suggestRes = await axios.get(
  `http://192.168.199.195:8011/v1/messages/${messageId}/suggested`,
  {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer app-xxxxxx' // 必须和上面一致
    },
    params: { user: 'abc-123' }
  }
);
console.log('建议问题', suggestRes.data);

只要 token、user、message_id 三者都对齐,接口就不会 404。如果还有问题,建议检查后端日志,确认 message_id 是否真的写入数据库,以及 app_id、user_id 是否一致。
详细原理可参考 源码实现

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 17, 2025): <!-- Answer --> 你的 404 问题是因为创建消息和获取建议问题时用的 app token(Authorization)不一致。Dify 后端会严格校验 message_id 是否属于当前 app、user 和来源(from_source),只要 app token 不同,哪怕 user 一样,也查不到消息,会返回 "Message Not Exists"(404)【参考源码说明】(https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/services/message_service.py#L27-L306)。 正确做法: 1. 创建聊天消息(/v1/chat-messages)和获取建议问题(/v1/messages/{message_id}/suggested)时,必须用同一个 app 的 token(Authorization: Bearer ...)。 2. user 参数要和创建消息时完全一致。 3. message_id 必须用 /v1/chat-messages 返回的 message_id 字段,不能用其他来源的 id。 示例流程: ```js // 1. 创建消息 const createRes = await fetch('http://192.168.199.195:8011/v1/chat-messages', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer app-xxxxxx' // 用同一个 token }, body: JSON.stringify({ inputs: imagesInput, query: '头痛', response_mode: 'streaming', conversation_id: this.conversationId, user: 'abc-123' }), }); const data = await createRes.json(); const messageId = data.message_id; // 2. 获取建议问题 const suggestRes = await axios.get( `http://192.168.199.195:8011/v1/messages/${messageId}/suggested`, { headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer app-xxxxxx' // 必须和上面一致 }, params: { user: 'abc-123' } } ); console.log('建议问题', suggestRes.data); ``` 只要 token、user、message_id 三者都对齐,接口就不会 404。如果还有问题,建议检查后端日志,确认 message_id 是否真的写入数据库,以及 app_id、user_id 是否一致。 详细原理可参考 [源码实现](https://github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/services/message_service.py#L27-L306)。 <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/80e50077-7249-4e35-bbe6-4b50a90c27fe?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/80e50077-7249-4e35-bbe6-4b50a90c27fe?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/80e50077-7249-4e35-bbe6-4b50a90c27fe?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/80e50077-7249-4e35-bbe6-4b50a90c27fe?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/80e50077-7249-4e35-bbe6-4b50a90c27fe?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/80e50077-7249-4e35-bbe6-4b50a90c27fe?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/80e50077-7249-4e35-bbe6-4b50a90c27fe?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=%E4%BD%A0%E7%9A%84%20404%20%E9%97%AE%E9%A2%98%E6%98%AF%E5%9B%A0%E4%B8%BA%E5%88%9B%E5%BB%BA%E6%B6%88%E6%81%AF%E5%92%8C%E8%8E%B7%E5%8F%96%E5%BB%BA%E8%AE%AE%E9%97%AE%E9%A2%98%E6%97%B6%E7%94%A8%E7%9A%84%20app%20token%EF%BC%88Authorization%EF%BC%89%E4%B8%8D%E4%B8%80%E8%87%B4%E3%80%82Dify%20%E5%90%8E%E7%AB%AF%E4%BC%9A%E4%B8%A5%E6%A0%BC%E6%A0%A1%E9%AA%8C%20message_id%20%E6%98%AF%E5%90%A6%E5%B1%9E%E4%BA%8E%E5%BD%93%E5%89%8D%20app%E3%80%81user%20%E5%92%8C%E6%9D%A5%E6%BA%90%EF%BC%88from_source%EF%BC%89%EF%BC%8C%E5%8F%AA%E8%A6%81%20app%20token%20%E4%B8%8D%E5%90%8C%EF%BC%8C%E5%93%AA%E6%80%95%20user%20%E4%B8%80%E6%A0%B7%EF%BC%8C%E4%B9%9F%E6%9F%A5%E4%B8%8D%E5%88%B0%E6%B6%88%E6%81%AF%EF%BC%8C%E4%BC%9A%E8%BF%94%E5%9B%9E%20%22Message%20Not%20Exists%22%EF%BC%88404%EF%BC%89%E3%80%90%E5%8F%82%E8%80%83%E6%BA%90%E7%A0%81%E8%AF%B4%E6%98%8E%E3%80%91%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/services/message_service.py%23L27-L306%29%E3%80%82%0A%0A%E6%AD%A3%E7%A1%AE%E5%81%9A%E6%B3%95%EF%BC%9A%0A%0A1.%20%E5%88%9B%E5%BB%BA%E8%81%8A%E5%A4%A9%E6%B6%88%E6%81%AF%EF%BC%88/v1/chat-messages%EF%BC%89%E5%92%8C%E8%8E%B7%E5%8F%96%E5%BB%BA%E8%AE%AE%E9%97%AE%E9%A2%98%EF%BC%88/v1/messages/%7Bmessage_id%7D/suggested%EF%BC%89%E6%97%B6%EF%BC%8C%E5%BF%85%E9%A1%BB%E7%94%A8%E5%90%8C%E4%B8%80%E4%B8%AA%20app%20%E7%9A%84%20token%EF%BC%88Authorization%3A%20Bearer%20...%EF%BC%89%E3%80%82%0A2.%20user%20%E5%8F%82%E6%95%B0%E8%A6%81%E5%92%8C%E5%88%9B%E5%BB%BA%E6%B6%88%E6%81%AF%E6%97%B6%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4%E3%80%82%0A3.%20message_id%20%E5%BF%85%E9%A1%BB%E7%94%A8%20/v1/chat-messages%20%E8%BF%94%E5%9B%9E%E7%9A%84%20message_id%20%E5%AD%97%E6%AE%B5%EF%BC%8C%E4%B8%8D%E8%83%BD%E7%94%A8%E5%85%B6%E4%BB%96%E6%9D%A5%E6%BA%90%E7%9A%84%20id%E3%80%82%0A%0A%E7%A4%BA%E4%BE%8B%E6%B5%81%E7%A8%8B%EF%BC%9A%0A%0A%60%60%60js%0A//%201.%20%E5%88%9B%E5%BB%BA%E6%B6%88%E6%81%AF%0Aconst%20createRes%20%3D%20await%20fetch%28%27http%3A//192.168.199.195%3A8011/v1/chat-messages%27%2C%20%7B%0A%20%20method%3A%20%27POST%27%2C%0A%20%20headers%3A%20%7B%0A%20%20%20%20%27Content-Type%27%3A%20%27application/json%27%2C%0A%20%20%20%20%27Authorization%27%3A%20%27Bearer%20app-xxxxxx%27%20//%20%E7%94%A8%E5%90%8C%E4%B8%80%E4%B8%AA%20token%0A%20%20%7D%2C%0A%20%20body%3A%20JSON.stringify%28%7B%0A%20%20%20%20inputs%3A%20imagesInput%2C%0A%20%20%20%20query%3A%20%27%E5%A4%B4%E7%97%9B%27%2C%0A%20%20%20%20response_mode%3A%20%27streaming%27%2C%0A%20%20%20%20conversation_id%3A%20this.conversationId%2C%0A%20%20%20%20user%3A%20%27abc-123%27%0A%20%20%7D%29%2C%0A%7D%29%3B%0Aconst%20data%20%3D%20await%20createRes.json%28%29%3B%0Aconst%20messageId%20%3D%20data.message_id%3B%0A%0A//%202.%20%E8%8E%B7%E5%8F%96%E5%BB%BA%E8%AE%AE%E9%97%AE%E9%A2%98%0Aconst%20suggestRes%20%3D%20await%20axios.get%28%0A%20%20%60http%3A//192.168.199.195%3A8011/v1/messages/%24%7BmessageId%7D/suggested%60%2C%0A%20%20%7B%0A%20%20%20%20headers%3A%20%7B%0A%20%20%20%20%20%20%27Content-Type%27%3A%20%27application/json%27%2C%0A%20%20%20%20%20%20%27Authorization%27%3A%20%27Bearer%20app-xxxxxx%27%20//%20%E5%BF%85%E9%A1%BB%E5%92%8C%E4%B8%8A%E9%9D%A2%E4%B8%80%E8%87%B4%0A%20%20%20%20%7D%2C%0A%20%20%20%20params%3A%20%7B%20user%3A%20%27abc-123%27%20%7D%0A%20%20%7D%0A%29%3B%0Aconsole.log%28%27%E5%BB%BA%E8%AE%AE%E9%97%AE%E9%A2%98%27%2C%20suggestRes.data%29%3B%0A%60%60%60%0A%0A%E5%8F%AA%E8%A6%81%20token%E3%80%81user%E3%80%81message_id%20%E4%B8%89%E8%80%85%E9%83%BD%E5%AF%B9%E9%BD%90%EF%BC%8C%E6%8E%A5%E5%8F%A3%E5%B0%B1%E4%B8%8D%E4%BC%9A%20404%E3%80%82%E5%A6%82%E6%9E%9C%E8%BF%98%E6%9C%89%E9%97%AE%E9%A2%98%EF%BC%8C%E5%BB%BA%E8%AE%AE%E6%A3%80%E6%9F%A5%E5%90%8E%E7%AB%AF%E6%97%A5%E5%BF%97%EF%BC%8C%E7%A1%AE%E8%AE%A4%20message_id%20%E6%98%AF%E5%90%A6%E7%9C%9F%E7%9A%84%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%8C%E4%BB%A5%E5%8F%8A%20app_id%E3%80%81user_id%20%E6%98%AF%E5%90%A6%E4%B8%80%E8%87%B4%E3%80%82%20%20%0A%E8%AF%A6%E7%BB%86%E5%8E%9F%E7%90%86%E5%8F%AF%E5%8F%82%E8%80%83%20%5B%E6%BA%90%E7%A0%81%E5%AE%9E%E7%8E%B0%5D%28https%3A//github.com/langgenius/dify/blob/df2f1eb028f9e7c7083e96b2c90ee28cb7f53a6d/api/services/message_service.py%23L27-L306%29%E3%80%82)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29807)
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

我现在改成一致的了 接口提示这个错误@dosu
{code: "bad_request", message: "Suggested Questions Is Disabled.", status: 400}

@lij82304885 commented on GitHub (Dec 17, 2025): 我现在改成一致的了 接口提示这个错误@dosu {code: "bad_request", message: "Suggested Questions Is Disabled.", status: 400}
Author
Owner

@lij82304885 commented on GitHub (Dec 17, 2025):

可以了 可以了 在编排开一下功能就行 感谢@dosu

@lij82304885 commented on GitHub (Dec 17, 2025): 可以了 可以了 在编排开一下功能就行 感谢@dosu
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#21120