问题描述
我正在尝试向支持 cors 策略的不同源服务器发送 post 请求。
问题是 content-type:application/json
.CORS 飞行前请求(OPTIONS 调用)不能是这个 Content-Type。
我还有另一种选择与我的标题一起发送:Access-Control-Request-Headers: content-type,deviceid,devicepassword,deviceversion
有没有办法获取数据?
我正在使用 react.js 和 asp.net core 编写的后端服务
解决方法
希望这能解决问题。
import {
TurnContext,TeamsActivityHandler,CardFactory,MessagingExtensionAction,TeamsInfo,} from 'botbuilder';
export default class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler {
constructor() {
super();
}
// @ts-ignore
handleTeamsMessagingExtensionSubmitAction(
context: TurnContext,action: MessagingExtensionAction,) {
switch (action.commandId) {
case 'someCommand':
return handleCommand(context,action);
default:
throw new Error('NotImplemented');
}
}
}
async function handleCommand(
context: TurnContext,) {
const card = CardFactory.heroCard(
'Some Command','We have received your command!',);
const user = await TeamsInfo.getMember(context,context.activity.from.id);
console.log('User:',user);
const attachment = {
contentType: card.contentType,content: card.content,preview: card,};
return {
composeExtension: {
type: 'result',attachmentLayout: 'list',attachments: [attachment],},};
}
,
如果传入自定义header,则需要添加指定的请求header。
services.AddCors(option=>
{
option.AddPolicy("policyname",builder =>
builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
});
删除 credentials: 'include'
。
另一种方法:不要删除credentials: 'include'
。在烘焙中添加 AllowCredentials
。
services.AddCors(option=>
{
option.AddPolicy("policyname",builder =>
builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials();
});