【问题标题】:Mturk externalQuestion with jquery.ajax POST: Access-Control-Allow-Origin error带有 jquery.ajax POST 的 Mturk externalQuestion:Access-Control-Allow-Origin 错误
【发布时间】:2016-05-23 00:08:39
【问题描述】:

我正在使用 Amazons Mechanical Turk (Mturk) 并尝试将作业提交为已完成,以便可以向工人展示下一个 HIT。

我使用 externalQuestion,我的服务器存储了工作人员输入的所有数据。工作人员完成后,他们单击提交按钮,该按钮发送以下 POST:

$.ajax({
  url: self.props.userData.turkSubmitTo + '/mturk/externalSubmit',
  data: {assignmentId:self.props.userData.assignmentId},
  type: 'POST',
  success: function(resp) { console.log('good');},
  error: function(resp, err) { console.log('fail'); console.log(resp); console.log(err);}
});

不幸的是,我收到以下错误:

XMLHttpRequest cannot load https://workersandbox.mturk.com/mturk/externalSubmit?assignmentId=3AMYWKA6YBMSYVY7OGYPJIPCGPK6OK. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://shrouded-plains-8041.herokuapp.com' is therefore not allowed access.

请注意,如果我使用 dataType 'jsonp' 发布以尝试解决这个明显的跨域问题,则提交工作正常,但 externalQuestion iframe 不会刷新到下一个 HIT。

我不知道为什么我会遇到这个跨域“访问控制允许来源”问题。有什么帮助吗?

【问题讨论】:

  • 请在网络上搜索该错误。它一天来这里很多次。至于使用 jsonp 你不能使用 POST 和 jsonp 因为它是一个脚本请求而不是 ajax。简短的回答是,如果可能,您需要在 api 上启用 CORS 或使用代理
  • 好的,谢谢!是的,我确实做了很多谷歌搜索。这对 jsonp 很有意义,以及为什么它不能按预期工作。我无权访问 api 来启用 COR。我想它必须是一个代理。亚马逊的 Mturk 需要一个代理来执行这个相当标准的操作,这似乎很奇怪(而奇怪的是我问这个问题的原因)。任何有 Mturk 经验的人都可以评论吗?

标签: javascript jquery mechanicalturk


【解决方案1】:

我与亚马逊的乐于助人的人取得了联系,他们回答:

嗨,本 -

我认为问题在于您的代码正试图获取 用户的浏览器向亚马逊提交 AJAX 请求。自页面 这段代码是由您自己在 Heroku 上的应用程序生成的, 浏览器默认不允许这样做(从一个 域到另一个)。

解决方案是让代码执行表单提交,而不是 AJAX 提交。 在此处查看 JQuery 表单提交的文档: https://api.jquery.com/submit/.

让我知道这是否适合你。

谢谢,塔尼姆

这里是提交代码:

  <rb.Modal.Footer>
    <form name="mturk_form" method="post" id="mturk_form" action={self.props.userData.submitTo + "/mturk/externalSubmit"}>
      <input type="hidden" value='' name="assignmentId" id={self.props.userData.assignmentId}/>
      <rb.Input type="submit" style={{width:'70%', float: "left"}}/>
      <rb.Button onClick={self.props.closeSubmit}>Cancel</rb.Button>
    </form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 2017-06-15
    • 2019-04-13
    • 2017-12-06
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多