我有一条需要身份验证和授权的路由。目前,我已经使用python中的用户api实现了这一目标。
这是我的HTML表单
<form action="/xxxx/xxxx/Add-Article" id="form-Save-Article" method=post>
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<div class="form-group">
<label for="txtArticleTitle">Article Title</label>
<input type="text" name="ArticleTitle" class="form-control" id="txtArticleTitle" placeholder="Article Title">
</div>
<div class="form-group">
<label for="txtArticleAuthor">Article Author</label>
<input type="text" name="ArticleAuthor" class="form-control" id="txtArticleAuthor" placeholder="Article Author">
</div>
<div class="form-group">
<label for="txtArticleContent">Article Content</label>
<input type="text" name="ArticleContent" class="form-control" id="txtArticleContent"
placeholder="Article Content">
</div>
<button type="submit" name="submit" class="btn btn-primary">
Add New Article
</button>
</form>
这是处理它的路线。
@admin_articles_routes.route('/xxxx/xxxx/Add-Article', methods=['GET','POST'])
@cross_domain(origin="*")
@authenticate_admin
def add_articles():
af = ArticleFactory()
article_title = request.args['ArticleTitle']
article_author = request.args['ArticleAuthor']
article_content = request.args['ArticleContent']
article = af.get_new_article()
article.title = article_title
article.author = article_author
article.content = article_content
af.add_article(article)
return redirect('/xxxx/Articles')
当我填写表单并提交时,我收到403状态代码的错误。
即使我删除了cross_domain装饰器,它仍然给我403状态。
我试图从HTML中删除以下行,但我仍然得到403.
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
答案 0 :(得分:0)
问题归因于same-origin policy。
Google Cloud Platform的以下article非常清楚地解释了这一点。
我最终在云存储桶上运行以下命令来解决问题。
gsutil cors set cors-json-file.json gs://example