首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >金字塔CORS不提供PUT和DELETE服务

金字塔CORS不提供PUT和DELETE服务
EN

Stack Overflow用户
提问于 2017-08-08 17:43:23
回答 1查看 699关注 0票数 2

我对金字塔框架有一个严重的问题。我将此函数添加到金字塔

代码语言:javascript
运行
复制
add_cors_headers_response_callback(event):
    def cors_headers(request, response):
        response.headers.update({
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'POST,GET,DELETE,PUT,OPTIONS',
        # 'Access-Control-Allow-Methods': 'DELETE, OPTIONS',
        'Access-Control-Allow-Headers': 'Origin, Content-Type, Accept, Authorization',
        'Access-Control-Allow-Credentials': 'true',
        'Access-Control-Max-Age': '1728000',
        })
    event.request.add_response_callback(cors_headers)

from pyramid.events import NewRequest
config.add_subscriber(add_cors_headers_response_callback, NewRequest)

我可以使用GET、POST方法向我的服务器发出请求。问题是,当我使用PUT和DELETE方法时,服务器会发送HTTP状态404,但当我卷曲路由时,我会得到答案(或使用POSTMAN)。

我对Node.JS使用相同的角度http查询,它接受我的请求。我不知道为什么金字塔拒绝为景观服务

代码语言:javascript
运行
复制
updatePatternModel(newPattern,url) {
    let fullurl = this.baseUrl + url;
    let data = {
      "rule":newPattern
    }; 
    return this.http.put(fullurl,JSON.stringify(data))
      .map(response => response.json())
      .catch(err => this.handleErrorObservable(err));
  }

金字塔

代码语言:javascript
运行
复制
@view_config(request_method='PUT', route_name='gm')
    def gm(self):
        return dict()

编辑过的

我举了个例子

代码语言:javascript
运行
复制
from pyramid.view import view_config

@view_config(route_name='gm', renderer='json',request_method="GET")
def get(request):
    return dict(hello="GET")


@view_config(route_name='gm', renderer='json',request_method="POST")
def post(request):
    return dict(hello="POST")


@view_config(route_name='gm', renderer='json',request_method="PUT")
def put(request):
    return dict(hello="PUT")


@view_config(route_name='gm', renderer='json',request_method="DELETE")
def delete(request):
    return dict(hello="DELETE")

GET / POST有效,但PUT无效,Delete无效!

代码语言:javascript
运行
复制
import { Injectable } from '@angular/core';
import {Http} from "@angular/http";

import "rxjs/add/operator/map"

@Injectable()
export class AppService {
  baseUrl : string = "http://10.0.0.34:8880"
  constructor(public http:Http) { }

  getData(url) {
    console.log('hi');
    let full_url= this.baseUrl + url;
    return this.http.get(full_url)
      .map(response => response.json());
  }
  postData(url) {
    console.log('hello');
    let full_url= this.baseUrl + url;
    return this.http.post(full_url,null)
      .map(response => response.json());
  }
  putData(url) {
    console.log('hello');
    let full_url= this.baseUrl + url;
    return this.http.put(full_url,null)
      .map(response => response.json());
  }
  deleteData(url) {
    console.log('hello');
    let full_url= this.baseUrl + url;
    return this.http.delete(full_url)
      .map(response => response.json());
  }

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-08 23:32:51

解决了,谢谢

代码语言:javascript
运行
复制
@view_config (route_name='gm', renderer='json',request_method="OPTIONS")
    def options(context, request):
        request.response.headers.update({
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'POST,GET,DELETE,PUT,OPTIONS',
            'Access-Control-Allow-Headers': 'Origin, Content-Type, Accept, Authorization',
            'Access-Control-Allow-Credentials': 'true',
            'Access-Control-Max-Age': '1728000',
        })
        return dict()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45564898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档