1

当向 Tastypie (Django) 发出 POST 以将新的“项目”对象添加到我的数据库时,以下代码在 IIS 之外以调试模式正常工作。

$.ajax({
    url: "http://webserver.com/api/v1/project/",
    type: "POST",
    data: jsonProject
    ...
    success: do something with the response object

注意:我在 Tastypie 中使用“always_return_data = True”将新创建的对象返回给客户端。

但是,当我将相同的代码发布到 IIS 并运行应用程序时,Tastypie 返回以下 HTML,并在末尾附加了 JSON 对象。有没有人对为什么会发生这种情况有任何理论,更重要的是,如何防止 IIS 预先添加这个 HTML?

"<head><title>Document Moved</title></head><body><h1>Object Moved</h1>This document may be found <a HREF="http://localhost/api/v1/project/14/">here</a></body>{"id": 14, "name": "New Project", "resource_uri": "/api/v1/project/14/", "slug": "new-project", "start_date": null, "status": 0}"

我可以通过拆分标签上的响应来解决问题,但至少可以说这不是一个非常优雅的黑客攻击。

4

1 回答 1

0

每次您创建新资源时, Tastypie 都会返回一个Location标头,指向它(这是http://localhost/api/v1/project/14/您在响应中看到的 url)。

我不确定您是如何在 IIS 上运行 django,但我怀疑您的问题可能与此处描述的问题不同: W7 Pro IIS 7.5 overwrites PHP Location: Header (solved)

于 2013-04-23T16:09:57.797 回答