diff --git a/remote_judger/src/providers/atcoder.ts b/remote_judger/src/providers/atcoder.ts index 8b6da58..ae83632 100644 --- a/remote_judger/src/providers/atcoder.ts +++ b/remote_judger/src/providers/atcoder.ts @@ -193,9 +193,8 @@ export default class AtcoderProvider implements IBasicProvider { } const [contestId, problemId] = parseProblemId(id); - const csrf = await this.getCsrfToken( - `/contests/${contestId}/tasks/${problemId}` - ); + const referer = `/contests/${contestId}/tasks/${problemId}`; + const csrf = await this.getCsrfToken(referer); logger.debug( 'Submitting', @@ -208,12 +207,14 @@ export default class AtcoderProvider implements IBasicProvider { await next({ status: 'Submitting to AtCoder...' }); // TODO: check submit time to ensure submission - const res = await this.post(`/contests/${contestId}/submit`).send({ - csrf_token: csrf, - 'data.TaskScreenName': problemId, - 'data.LanguageId': programType.id, - sourceCode: code, - }); + const res = await this.post(`/contests/${contestId}/submit`) + .set('Referer', referer) + .send({ + 'data.TaskScreenName': problemId, + 'data.LanguageId': programType.id, + sourceCode: code, + csrf_token: csrf, + }); if (res.error) { await end({ @@ -233,7 +234,9 @@ export default class AtcoderProvider implements IBasicProvider { const { text: status, header: status_header } = await this.get( `/contests/${contestId}/submissions/me` - ).retry(3); + ) + .set('Referer', referer) + .retry(3); if (status_header['set-cookie']) { this.cookie = status_header['set-cookie'];