在jQuery .ajax()POST上出现405错误(方法不允许)

时间:2014-03-02 07:10:08

标签: javascript jquery ajax

我在邮寄请求中得到405(METHOD NOT NOTOWED)。我知道jsonp只适用于GET请求,而且我很可能需要启用CORS。有没有办法通过我的javascript文件启用CORS?或者不涉及创建单独的服务器端桥的任何方式?以下是ajax请求的代码:

function getData(){
    var myUrl = 'http://text-processing.com/api/sentiment/';
    var searchTerm = "happy";

    $.ajax({
        url: myUrl,
        type: 'POST',
        data: { 'text' : searchTerm },
        dataType: 'jsonP',
        error: function(msg) {
            console.log(msg);
        },
        success: function(response){
            console.log("it worked");
            console.log(response);
        }
     });
}
getData();

1 个答案:

答案 0 :(得分:0)

如果您使用的是ExpressJS 有一种方法可以启用跨域:

在您要发布的文件中,在require语句之后,尝试在此处添加此代码: 示例:您发布的是user.js,因此在获得路由后将其放在文件的开头。

var router = express.Router();

router.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods", "PUT, GET,POST,OPTIONS");
  next();
 });

实际上,你可以只添加:

  router.all('*', function(req, res, next) {
      res.header("Access-Control-Allow-Origin", "*");
      res.header("Access-Control-Allow-Headers", "X-Requested-With");
      next();
     });

或针对特定请求:

 router.all('/', function(req, res, next) {
          res.header("Access-Control-Allow-Origin", "*");
          res.header("Access-Control-Allow-Headers", "X-Requested-With");
          next();
         });

但是,我认为这不太安全。您可以像我现在一样进行研究以查看使用它的最佳方法,但您可以将其用于测试并稍后进行更改。至少,你不会被困在这一部分。

来源:http://enable-cors.org/server.html

http://enable-cors.org/server_expressjs.html

祝你好运! ;)