Вкладка Microsoft Teams http / https не отправляет запрос

#javascript #azure-functions #microsoft-teams

#javascript #azure-функции #microsoft-teams

Вопрос:

Я хочу создать вкладку Microsoft Teams в качестве веб-приложения. Я запустил и запустил начальную настройку. (Используя команды Yo) Теперь я хочу отправить http-запрос (ы) в функцию Azure. Поэтому я добавил функцию промежуточного программного обеспечения post в свой server.ts, которая должна вызывать эту функцию.

     express.post("/createteamswiki", (req, res) => {
        https.request("my.function.url", { method : "POST" }, () => {
        });
        res.status(200);
        res.json("Oki");
    }); 
  

В моем WikiConfig.ts я изменил метод сохранения для отправки запроса. Я попытался использовать vanilla-js и модули: http и https. С помощью vanilla-js запрос отправляется, но в Chrome dev tools он помечается как ERR_FAILED. Библиотеки вообще ничего не отправляют. Таким образом, обратный вызов успеха никогда не вызывается, и поэтому saveEvent.notifySuccess(); также не вызывается. Таким образом, окно конфигурации остается и сообщает об ошибке.

     public async componentWillMount() {
            this.updateTheme(this.getQueryVariable("theme"));
    
            if (await this.inTeams()) {
                microsoftTeams.initialize();
    
                microsoftTeams.getContext((context: microsoftTeams.Context) => {
                    this.setState({
                        value: context.entityId
                    });
                    this.updateTheme(context.theme);
                    microsoftTeams.settings.setValidityState(true);
                    microsoftTeams.appInitialization.notifySuccess();
                });
    
                microsoftTeams.settings.registerOnSaveHandler((saveEvent: microsoftTeams.settings.SaveEvent) => {
                    // Calculate host dynamically to enable local debugging
                    const host = "https://"   window.location.host;
                    microsoftTeams.settings.setSettings({
                        contentUrl: host   "/sharepointWikiTab/?name={loginHint}amp;tenant={tid}amp;group={groupId}amp;theme={theme}",
                        websiteUrl: host   "/sharepointWikiTab/?name={loginHint}amp;tenant={tid}amp;group={groupId}amp;theme={theme}",
                        suggestedDisplayName: "Sharepoint Wiki",
                        removeUrl: host   "/sharepointWikiTab/remove.html?theme={theme}",
                        entityId: this.state.value
                    });
                    microsoftTeams.getContext((context: microsoftTeams.Context) => {
                        this.setState({
                            value: context.teamSiteUrl || ""
                        });
                        https.request("https://"   window.location.host   "/createteamswiki?code=gM6t7bov41tkw1ZTxGZUasY1WQH7UgrONp4OyoVzaYaFtFBTBwZcRQ==amp;team="   context.teamSiteUrl, (res) => {
                            this.setState({
                                value: "Awesome it works..."
                            });
                            saveEvent.notifySuccess();
                        });
                    });
                    // saveEvent.notifySuccess();
                });
            } else {
            }
        }
  

Я не могу найти никаких причин, по которым он ведет себя таким образом, поскольку запрос вызывает node.js сервер, который успешно обслуживает http-файлы.

Комментарии:

1. Я считаю, что это вызвано перекрестным запросом источника. Можете ли вы проверить заголовок вашего запроса и посмотреть, включен ли CORS, а также проверить, добавлен ли URL-адрес в массив validDomain[] в манифесте.

2. @Trinetra-MSFT вы правы. Он отсутствовал в массиве validDomain.

3. Полезно знать, что проблема решена

4. Пожалуйста, отметьте этот вопрос закрытым, приняв ответ

5. Спасибо , что приняли ответ, это поможет другим членам сообщества с подобным вопросом. Не могли бы вы уделить одну минуту, чтобы сообщить нам, как мы это сделали, нажав на эту ссылку обратной связи ?

Ответ №1:

Я считаю, что это вызвано перекрестным запросом источника. Можете ли вы проверить заголовок вашего запроса и посмотреть, включен ли CORS, а также проверить, добавлен ли URL-адрес в массив validDomain[] в манифесте