【问题标题】:ajax request to pyramid returns Origin is not allowed by Access-Control-Allow-OriginAccess-Control-Allow-Origin 不允许对金字塔返回 Origin 的 ajax 请求
【发布时间】:2013-11-08 08:18:36
【问题描述】:

我正在使用 python 金字塔,基本上我已经定义了这样的路线:

config.add_route('metaschemaxml', '/metaschema/{id}/xml')

视图映射metashemaxml是这样的:

@view_config(route_name='metaschemaxml', renderer='string')
def metaxml_view(request):
  schema = request.matchdict['id']
  urlparams = request.query_string
  urlparams.strip()
  required = 0
  for x in urlparams.split(','):
      if "required=1" in x:
          required = 1
  rxml = '<?xml version="1.0" encoding="utf-8"?><eroot></eroot>'

  try:
      tags = DBSession.query(mtemplatexelem_model).filter(mtemplatexelem_model.template_id == int(schema)).order_by(mtemplatexelem_model.xelem_id).all()
      rxml = getXMLFromQuery(tags, required)
  except DBAPIError:
      return Response("Error in DB", content_type='text/plain', status_int=500)

  return Response(rxml, content_type='text/xml', charset='utf8')

如果我打电话,一切都会很好:

http://localhost:6543/metaschema/1/xml

但如果我通过 Ajax 执行相同的请求,我会得到:

XMLHttpRequest cannot load http://172.26.16.28:6543/metaschema/1/xml. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

我需要做什么才能允许金字塔中的 ajax 请求?

谢谢, 卡洛斯

【问题讨论】:

    标签: python ajax xmlhttprequest pyramid


    【解决方案1】:

    localhost172.26.16.28是不同的域,大部分浏览器不允许@ 987654321@ AJAX 请求。您可以在此处找到有关该主题和可能解决方案的更多信息:Origin is not allowed by Access-Control-Allow-Origin

    【讨论】:

      【解决方案2】:

      感谢亚历山大的解释。

      为了在金字塔中解决这个问题,我在我的代码中更改了这个

      resp = Response(rxml, content_type='text/xml', charset='utf8')
      resp.headerlist.append(('Access-Control-Allow-Origin', '*')) #Add the access control
      return resp
      

      【讨论】:

        猜你喜欢
        • 2013-03-10
        • 2013-09-09
        • 1970-01-01
        • 2013-05-16
        • 2012-06-07
        • 2011-11-05
        相关资源
        最近更新 更多